zoukankan      html  css  js  c++  java
  • java生成base64编码的png

    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, 在加上后台生成的二进制才能正确解析二进制

    欢迎大家来我的新家看一看 3wwang个人博客-记录走过的技术之路

  • 相关阅读:
    unalias---取消命令别名
    alias---设置别名
    type---显示指定命令的类型
    logout命令用于退出当前登录的Shell
    enable&&builtin---shell内部命令
    read---读取变量值
    readonly&&declare&&unset &&export&&env环境变量
    fc---输出历史命令列表
    command---调用指定的指令并执行
    terminfo 数据库?
  • 原文地址:https://www.cnblogs.com/wang985850293/p/5632915.html
Copyright © 2011-2022 走看看