博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA生成二维码并转化为二进制在页面展示
阅读量:6804 次
发布时间:2019-06-26

本文共 1919 字,大约阅读时间需要 6 分钟。

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

转载地址:http://ctjwl.baihongyu.com/

你可能感兴趣的文章
实操总结:小程序裂变0成本获客3要素
查看>>
ARM给服务器厂商更多创新机会
查看>>
[2011 年终项目总结] 第六章、网站测试
查看>>
找到7天内要过生日的记录
查看>>
获取桌面DC: GetDC(GetDesktopWindow())与GetDC(NULL)
查看>>
Objective-C 基础,类和对象,方法和消息,已声明的属性和存取方法,块对象,协议和范畴类,预定义类型和编码策略...
查看>>
NDK编译时指定NDK_MODULE_PATH的方法
查看>>
解决Android 应用运行报Unable to resolve superclass of L错误
查看>>
经典排序之 归并排序
查看>>
调用手机震动
查看>>
编程珠玑:位图法排序
查看>>
CREATEMUTEX
查看>>
矢量数据压缩:道格拉斯普克算
查看>>
IIS添加对ashx文件的支持
查看>>
Top Down Operator Precedence - 自顶向下算符优先分析法
查看>>
android 来电自动接听和自动挂断
查看>>
SharePoint2010 获取网站集SPSite,SPWeb对象的4种方法
查看>>
poj 1607 Deck(坑爹的水题啊)
查看>>
Asterisk 函数
查看>>
你看得到工具的本质吗
查看>>