From 29422d1c040e19eed86f321a5b84c8c453d82a48 Mon Sep 17 00:00:00 2001 From: Administrator Date: Mon, 3 Oct 2022 16:57:17 +0800 Subject: [PATCH] bug --- src/sc545/pay/main/core.java | 4 +- src/sc545/pay/utils/ImgUtils.java | 244 ------------------------------ 2 files changed, 2 insertions(+), 246 deletions(-) delete mode 100644 src/sc545/pay/utils/ImgUtils.java diff --git a/src/sc545/pay/main/core.java b/src/sc545/pay/main/core.java index a66657c..f5bf0a1 100644 --- a/src/sc545/pay/main/core.java +++ b/src/sc545/pay/main/core.java @@ -6,7 +6,7 @@ import java.util.List; import java.util.Map; import sc545.pay.utils.DBUtil; -import sc545.pay.utils.ImgUtils; +import sc545.pay.utils.FileUtils; import sc545.pay.utils.ReadTxt; import sc545.pay.utils.Utils; @@ -69,7 +69,7 @@ public class core { if(i==1){ rs.put("code", "1"); rs.put("qrcode", response.getQrCode()); - rs.put("qrimg", ImgUtils.QrImgB64(response.getQrCode(), 300)); + rs.put("qrimg", FileUtils.QrImgB64(response.getQrCode(), 300)); rs.put("out_trade_no", response.getOutTradeNo()); }else rs.put("errcode", "-1"); } else { diff --git a/src/sc545/pay/utils/ImgUtils.java b/src/sc545/pay/utils/ImgUtils.java deleted file mode 100644 index 2ae62f0..0000000 --- a/src/sc545/pay/utils/ImgUtils.java +++ /dev/null @@ -1,244 +0,0 @@ -package sc545.pay.utils; - - -import java.awt.image.BufferedImage; -import java.io.ByteArrayOutputStream; -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.net.URL; -import java.util.*; - -import javax.imageio.ImageIO; - -import net.coobird.thumbnailator.Thumbnails; -import net.coobird.thumbnailator.geometry.Positions; -import sun.misc.BASE64Encoder; - -import com.google.zxing.*; -import com.google.zxing.common.BitMatrix; - -public class ImgUtils { - - public static void main(String[] args) throws Exception { - - } - - - - - -private static final int BLACK = 0xFF000000; -private static final int WHITE = 0xFFFFFFFF; -private static BufferedImage toBufferedImage(BitMatrix matrix) { - int width = matrix.getWidth(); - int height = matrix.getHeight(); - BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); - for (int x = 0; x < width; x++) { - for (int y = 0; y < height; y++) { - image.setRGB(x, y, matrix.get(x, y) ? BLACK : WHITE); - } - } - return image; -} - -private static void writeToFile(BitMatrix matrix, String format, File file) throws IOException { - BufferedImage image = toBufferedImage(matrix); - if (!ImageIO.write(image, format, file)) { - throw new IOException("Could not write an image of format " + format + " to " + file); - } -} - -/** - * 删除二维码白边 - * @param matrix - * @return - */ -public static BitMatrix deleteWhite(BitMatrix matrix) { - int[] rec = matrix.getEnclosingRectangle(); - int resWidth = rec[2] + 1; - int resHeight = rec[3] + 1; - - BitMatrix resMatrix = new BitMatrix(resWidth, resHeight); - resMatrix.clear(); - for (int i = 0; i < resWidth; i++) { - for (int j = 0; j < resHeight; j++) { - if (matrix.get(i + rec[0], j + rec[1])) - resMatrix.set(i, j); - } - } - return resMatrix; -} - - -/** - * 生成一张二维码图片文件 - * @param content 二维码内容 - * @param widthHeight 宽高度 - * @param path 图片存储路径(不带文件名) - * @return - */ -public static String QrImgFile(String content,int widthHeight,String path) { - try { - String codeName = UUID.randomUUID().toString();// 二维码的图片名 - String imageType = "jpg";// 图片类型 - MultiFormatWriter multiFormatWriter = new MultiFormatWriter(); - Map hints = new HashMap(); - hints.put(EncodeHintType.CHARACTER_SET, "UTF-8"); - BitMatrix bitMatrix= multiFormatWriter.encode(content, BarcodeFormat.QR_CODE, widthHeight, widthHeight, hints); - bitMatrix= deleteWhite(bitMatrix); - // BufferedImage imgbuf = toBufferedImage(bitMatrix); - File file1 = new File(path, codeName + "." + imageType); - writeToFile(bitMatrix, imageType, file1); - return path+codeName + "." + imageType; - - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - return null; -} - - -/** - * 生成一张二维码图片(BufferedImage) - * @param content 二维码内容 - * @param widthHeight 宽高度 - * @return - */ -public static BufferedImage QrImgBuf(String content,int widthHeight) { - try { - MultiFormatWriter multiFormatWriter = new MultiFormatWriter(); - Map hints = new HashMap(); - hints.put(EncodeHintType.CHARACTER_SET, "UTF-8"); - BitMatrix bitMatrix= multiFormatWriter.encode(content, BarcodeFormat.QR_CODE, widthHeight, widthHeight, hints); - bitMatrix= deleteWhite(bitMatrix); - BufferedImage imgbuf = toBufferedImage(bitMatrix); - return imgbuf; - - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - return null; -} - - - -/** - * 生成一张二维码图片(base64)
- * data:image/jpg;base64,base64_code - * @param content 二维码内容 - * @param widthHeight 宽高度 - * @return - */ -public static String QrImgB64(String content,int widthHeight) { - try { - MultiFormatWriter multiFormatWriter = new MultiFormatWriter(); - Map hints = new HashMap(); - hints.put(EncodeHintType.CHARACTER_SET, "UTF-8"); - BitMatrix bitMatrix= multiFormatWriter.encode(content, BarcodeFormat.QR_CODE, widthHeight, widthHeight, hints); - bitMatrix= deleteWhite(bitMatrix); - BufferedImage imgbuf = toBufferedImage(bitMatrix); - ByteArrayOutputStream os = new ByteArrayOutputStream();//新建流。 - ImageIO.write(imgbuf, "jpg", os);//利用ImageIO类提供的write方法,将bi以png图片的数据模式写入流。 - byte b[] = os.toByteArray();//从流中获取数据数组。 - String str = new BASE64Encoder().encode(b); - return str; - - } catch (Exception e) { - e.printStackTrace(); - } - - return null; -} - - -/** - * 图片质量压缩 - * @param img 文件流 - * @param quality 压缩质量 0~1/1为最高质量 - * @return - */ -public static BufferedImage rarImgBuf(InputStream img, double quality) { - BufferedImage buf =null; - try { - buf = Thumbnails.of(img).scale(1f).outputQuality(quality).asBufferedImage(); - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - return buf; -} - -/** - * 图片质量压缩 - * @param img 文件地址 - * @param quality 压缩质量 0~1/1为最高质量 - * @return - */ -public static File rarImgFile(File img, double quality) { - File arg0 = img; - try { - Thumbnails.of(img).scale(1f).outputQuality(quality).toFile(arg0); - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - return arg0; -} - -/** - * 裁剪图片
- * 从左上角开始裁切
- * 另存图片保持等比缩放,若填写的高度不符合自动调整为等比例 - * - * @param img 图片文件 - * @param p 裁切位置 Positions.TOP/BOTTOM_LEFT/RIGHT、CENTER - * @param x 裁切x轴范围 - * @param y 裁切y轴范围 - * @param width 另存图片的宽度 - * @param height 另存图片的高度 - * @return - */ -public static File cutImgFile(File img,Positions p,int x,int y,int width,int height) { - File arg0 = img; - try { - Thumbnails.of(img).sourceRegion(p, x, y).size(width, height).keepAspectRatio(true).toFile(arg0); - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - return arg0; -} - - -/** - * 裁剪图片
- * 从左上角开始裁切
- * 另存图片保持等比缩放,若填写的高度不符合自动调整为等比例 - * - * @param img 图片流 - * @param p 裁切位置 Positions.TOP/BOTTOM_LEFT/RIGHT、CENTER - * @param x 裁切x轴范围 - * @param y 裁切y轴范围 - * @param width 另存图片的宽度 - * @param height 另存图片的高度 - * @return - */ -public static BufferedImage cutImgBuf(InputStream img,Positions p,int x,int y,int width,int height) { - BufferedImage buf =null; - try { - buf=Thumbnails.of(img).sourceRegion(p, x, y).size(width, height).keepAspectRatio(true).asBufferedImage(); - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - return buf; -} - - - -}