您的位置:首页 > 其它

带图片二维码生成

2016-03-09 15:18 435 查看
import com.swetake.util.Qrcode;

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

import javax.imageio.ImageIO;

/**
* Created by Admin on 16-3-9.
*/
public class TestCode {
public static void main(String[] args) {
try {
//创建一个qrcode句柄
Qrcode qrcodeHandler = new Qrcode();
//二维码图片的纠错等级L(7%),M(15%),Q(25%),H(30%);
qrcodeHandler.setQrcodeErrorCorrect('M');
//编码格式二进制
qrcodeHandler.setQrcodeEncodeMode('B');
//版本,从1——21x21,2——25x25,每个版本增加4各模块,最高不能超过40
qrcodeHandler.setQrcodeVersion(7);
String content = "测试二维码!!!";
byte[] contentByte = content.getBytes("gbk");
//获取二维数组
boolean[][] codeOut=qrcodeHandler.calQrcode(contentByte);
System.out.println(codeOut.length+"----------"+codeOut[0].length);
int width = 139, height = 139;
BufferedImage bufImg = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics2D graphics2D = bufImg.createGraphics();
graphics2D.setBackground(Color.WHITE);
graphics2D.clearRect(0,0,width,height);
graphics2D.setColor(Color.BLACK);
int pos=2;
for (int i=0;i<codeOut.length;i++){
for (int j=0;j<codeOut.length;j++){
if (codeOut[i][j]){
graphics2D.fillRect(i*3+pos,j*3+pos,3,3);
}
}
}
//实例化一个Image对象
Image image=ImageIO.read(new File("e:/123/ic.png"));
//画制到画板
graphics2D.drawImage(image,45,45,49,49,null);
//释放资源
graphics2D.dispose();
//清空缓存
bufImg.flush();
//输出文件
File img=new File("e:/123/version.png");
ImageIO.write(bufImg,"PNG",img);
//关闭流

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



注:
* 依赖包Qrcode_swetake.jar
* 生成的二维码图片的大小是会根据所压缩的信息内容而变化的,
* 网上提供的例子是通过new BufferedImage(139, 139, BufferedImage.TYPE_INT_RGB);
* 来创建图像对象的,默认的情况下图片的大小是139*139,这个大小是适合QrcodeVersion为7的情况。 * 将图片的大小设置到300*300就可以很好的支持QrcodeVersion为20的情况,并且可以正常的解码。 * QrcodeVersion的范围值是【0-40】, * 0的含义是表示压缩的信息量将会根据实际传入值确定, * 只有最高上限的控制,而且图片的大小将会根据信息量自动缩放。 * 1-40的范围值,则有固定的信息量上限,而且图片的大小会固定在一个大小上, * 不会根据信息量的多少而变化。图片的大小和QrcodeVersion的换算关系为(0除外): * 图片大小 = 67 + 12 * (QrcodeVersion值 - 1)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: