打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
如何生成二维码图片

二维码的使用场景越来越多,大家也越来越倾向于扫一扫来实现信息的获取,那么二维码到底是怎么生成的呢,接下来讲述我们是怎么将一串信息转化为二维码图片的代码如下:

import java.awt.image.BufferedImage;

import java.io.File;

import java.io.IOException;

import java.io.OutputStream;

import java.util.EnumMap;

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 com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;

/**

* 根据字符串生成二维码工具类

*/

public class QrCodeUtil {

//二维码颜色 0x00000000,黑色 (注:二维码颜色色差大,扫描快,但如果'BLACK'设置为黑色外其他颜色,可能无法扫描)

private static final int BLACK = 0x00000000;

// 二维码背景色 0xFFFFFFFF,白色

private static final int WHITE = 0xFFFFFFFF;

//二维码图片宽度

private static final int width = 300;

//二维码图片高度

private static final int height = 300;

// 二维码格式参数

private static final EnumMap hints = new EnumMap<>(EncodeHintType.class);

static {

//二维码的纠错级别(排错率),4个级别:L (7%)、M (15%)、Q (25%)、H (30%)(最高H),纠错信息同样存储在二维码中,

//纠错级别越高,纠错信息占用的空间越多,那么能存储的有用讯息就越少;选择M,扫描速度快。

hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M);

// 二维码边界空白大小 1,2,3,4 (4为默认,最大)

hints.put(EncodeHintType.MARGIN, 1);

hints.put(EncodeHintType.CHARACTER_SET, 'UTF-8');

}

/**

* 测试主函数

* @param args

*/

public static void main(String[] args) {

String content = 'abc123456';//需要转化为二维码的信息

String format = 'png';

//生成的图片将会保存到d盘根目录下,也可以自己设置路径

writeToFile(content,format,new File('D:'+File.separator+'qrcode.png'));

}

/**

* 二维码输出到文件

* @param contents 二维码内容

* @param format 图片格式

* @param file 输出文件

*/

public static void writeToFile(String contents, String format, File file) {

BufferedImage image = encodeImg(contents);

try {

ImageIO.write(image, format, file);

} catch (IOException e) {

System.out.println('二维码写入文件失败' + e);

}

}

/**

* 绘制二维码

* @param contents 二维码内容

* @return image 二维码图片

*/

public static BufferedImage encodeImg(String contents) {

BufferedImage image = null;

try {

BitMatrix matrix = new MultiFormatWriter().encode(contents, BarcodeFormat.QR_CODE, width, height, hints);

image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

int width = matrix.getWidth();

int height = matrix.getHeight();

for (int x = 0; x < width;="" x++)="">

for (int y = 0; y < height;="" y++)="">

image.setRGB(x, y, matrix.get(x, y) ? BLACK : WHITE);

}

}

} catch (Exception e) {

System.out.println('生成二维码失败' + e);

}

return image;

}

}

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Java实战:Java使用Zxing二维码生成案例
java开发
Google开源项目ZXing(二维条码编解码)简单使用(Java版)
微信支付之扫码支付(java版 native原生支付)
java实现二维码的生成和解析:QRCode、zxing 两种方式
使用zxing生成嵌图片的二维码【java】
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服