二维码图片生成的工具类


需要的jar:  qrcode.jar


package org.lchq.Qrcode;


import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;


import javax.imageio.ImageIO;


import com.swetake.util.Qrcode;


/**
 * 二维码图片生成的工具类
 * 
 * 1.Java生成图片开始  Java的API
 * 
 * 2.Java生成二维码图片,了解二维码到底是什么,有何特征
 * 
 * 3.vCard协议,电子名片
 * 
 * 正方形矩阵
 * 二维码-->二进制表现  两种颜色 浅色0 深色1
 * @author lchq
 *
 */
public class CardUitl {


public static void main(String[] args) throws IOException {
int width=235,height=235;
// 在缓存中创建一个图片对象
//r red g green  b blue
BufferedImage bufImg=new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
//通过内存中的图片对象拿到绘图工具类
Graphics2D grap=bufImg.createGraphics();
//设置画笔颜色
grap.setColor(Color.WHITE);
//填充一个矩形
grap.fillRect(0, 0, width, height);

/**
* Qrcode码  Denso(日本)创建一维码

* 21*21个模块  -->177*177个模块  每提高一个版本会增加四个模块
* 数据类型与容量
* 数字:7089个字符
* 字母:4296个字符
* 8位字节的数据 : 2953
* 汉字 :1817

* 数据标书方方:深色模块表示二进制1,浅色模块表示二进制0
* 纠错能力: L(7%) M(15%) Q(25%) H(30%) 纠错级别越高存储信息越少

* qrcode.jar  zxing.jar
*/
Qrcode qrcode=new Qrcode();
qrcode.setQrcodeEncodeMode('B');
//设置纠错率
qrcode.setQrcodeErrorCorrect('M');
//设置版本号
qrcode.setQrcodeVersion(15);
//设置二位码需要加密的内容
//String content="15021554542";
String content="BEGIN:VCARD\nFN:Leon\nTITLE:碧华\nURL:http://www.baidu.com\nTEL:15021554542\nEND:VCARD";

boolean[][] bytes= qrcode.calQrcode(content.getBytes("UTF-8"));
//设置画笔颜色为黑色
grap.setColor(Color.BLACK);
//二进制, boolean ture 1  false 0
for (int i = 0; i < bytes.length; i++) {
for (int j = 0; j < bytes.length; j++) {
//因为背景设为浅色,那么只需将深色的方块描绘出来
if (bytes[j][i]) { 
grap.fillRect(j*3+2, i*3+2, 3, 3);
}
}
}
//二维码中的logo图片
BufferedImage logo=ImageIO.read(new File("E:\\logo.jpg"));
grap.drawImage(logo, 100, 100, 35,35,null);
//将缓存中的图片保存到硬盘
ImageIO.write(bufImg, "JPEG", new File("E:\\二维码.jpeg"));

/**
* vCard  电子名片
*/
System.out.println("生成二位码成功!");
}


}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值