• JAVA生成二维码并转化为二进制在页面展示


    引用jar包:

    zxing的core包,下载路径可参考:http://download.csdn.net/detail/sxg0205/9461106


    java代码:

    引用包:

    import java.awt.image.BufferedImage;

    import java.io.ByteArrayOutputStream;

    import java.io.IOException;
    import java.util.Hashtable;
    import javax.imageio.ImageIO;
    import com.google.zxing.BarcodeFormat;
    import com.google.zxing.EncodeHintType;
    import com.google.zxing.MultiFormatWriter;
    import com.google.zxing.common.BitMatrix;
    import sun.misc.BASE64Encoder;  


    方法:

    /**
    * 二维码生成器

    * @param text 二维码内容
    * @throws IOException 
    */
        @SuppressWarnings({ "unchecked", "rawtypes", "restriction" })
    public static String generalQRCode(String url) {   
            Hashtable hints= new Hashtable();   
            hints.put(EncodeHintType.CHARACTER_SET, "utf-8");   
            String binary = null;
            
    try {
    BitMatrix bitMatrix = new MultiFormatWriter().encode(
    url, BarcodeFormat.QR_CODE, 200, 200, hints);

    // 实现一: 输出图片到指定目录
    // File outputFile = new File("d://1.jpg");
    //        MatrixToImageWriter.writeToFile(bitMatrix, "png", outputFile);

    // 实现二:生成二维码图片并将图片转为二进制传递给前台
    // 1、读取文件转换为字节数组
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    BufferedImage image = toBufferedImage(bitMatrix);
    ////
    ImageIO.write(image, "png", out);
    byte[] bytes = out.toByteArray();

    // 2、将字节数组转为二进制
    BASE64Encoder encoder = new BASE64Encoder(); 
    binary = encoder.encodeBuffer(bytes).trim(); 

    } catch (Exception e) {
    e.printStackTrace();


    return binary;
        }   


    // 其他调用方法

        public 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) ? 0xFF000000 : 0xFFFFFFFF);
              }
            }
            
            return image;
          }

    前台ajax方法:

    $.ajax({
    url: 方法url,
    type:'post',
    success : function(data) {
    $('#img').attr('src', 'data:image/jpg;base64,' + data);
    }
    });


    注意:img 的src前面需要拼接data:image/jpg;base64, 在加上后台生成的二进制才能正确解析二进制


  • 相关阅读:
    Sql to Linq 小工具
    datagridview后台添加列
    datatable之distinct用法
    生成器
    函数练习一
    函数初识
    文件操作练习
    文件操作
    迭代器 递归
    基础数据类型上机题
  • 原文地址:https://www.cnblogs.com/jpfss/p/9518327.html
Copyright © 2020-2023  润新知