QrCode生成二维码

来源:互联网 发布:win7 网络电缆被拔出 编辑:程序博客网 时间:2024/06/05 15:41
QrCode.jar包下载

package com.aoleisite.cn.qrcode.casee;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;import com.swetake.util.Qrcode;/** * 生成带logo的二维码 * @author admin * */public class TestQrCode {/** * 测试 * @param args */public static void main(String[] args) {String content = "ceshiceshi ";String imagePath = "I:\\QRCodeTest\\luooluo.jpg";String logoPath = "C:/Users/admin/Desktop/zhanghmFile/images/IMG_0159.JPG";qrCodeUtil(content,imagePath,logoPath,11);}/** * 生成二维码(QRCode)图片  * @param content 二维码图片的内容  * @param imagePath生成二维码图片完整的路径  * @param logoPath 二维码图片中间的logo路径  * @param version二维码size */public static void qrCodeUtil(String content,String imagePath,String logoPath,Integer version){//设置二维码的宽高/*int width=240;int height=240;*//*int width=67 + 12*(version-1);        int height=67+12*(version-1);*/try {//创建对象Qrcode qrCode = new Qrcode();//设置:容错率(7% L、15%M、25%Q、30%H)说明:容错率越高。存储数据越有限qrCode.setQrcodeErrorCorrect('M');//设置版本号-40 共40个版本(1 -->21x21模块;40  -->177x177模块)qrCode.setQrcodeVersion(version);//设置参数模型:N代表数字、A代表a-Z、B代表其他字节qrCode.setQrcodeEncodeMode('B');int imageSize = 67+12*(version-1);//将字符串打散成字节数组,并设置编码格式byte[] b = content.getBytes("UTF-8");System.out.println(b.length);//创建画板:java自带的类BufferedImage bImage = new BufferedImage(imageSize, imageSize, BufferedImage.TYPE_INT_RGB);//根据画板拿画笔Graphics2D gs = bImage.createGraphics();gs.setBackground(Color.white);//设置二维码的背景色为白色gs.clearRect(0, 0, imageSize, imageSize);//清除杂色gs.setColor(Color.black);//设置画笔(图像)的颜色:一般为黑色int off = 2;//设置偏移量//输出内容》二维码if(b.length>0 && b.length<250){//将一维字节数组转化为二维,并限制最大字节数为119,印version为7boolean[][] codeOut = qrCode.calQrcode(b);for(int i=0;ibImage.getWidth()*2/10?bImage.getWidth()*2/10:imLogo.getWidth(null);int logoHeight = imLogo.getHeight(null)>bImage.getHeight()*2/10?bImage.getHeight()*2/10:imLogo.getHeight(null);/** * logo放在二维码中心 */int x = (bImage.getWidth()-logoWidth)/2;int y = (bImage.getHeight()-logoHeight)/2;gs.drawImage(imLogo, x, y, logoWidth, logoHeight, null);//资源释放gs.dispose();//画板的内容的清空bImage.flush();//文件位置:"I:\\QRCodeTest\\张华明.jpg"File file = new File(imagePath);if(!file.exists()){file.createNewFile();//写入磁盘文件,生成二维码code图片ImageIO.write(bImage, "PNG", file);}} catch (Exception e) {System.err.print("生成二维码IOException");e.printStackTrace();}}}

原创粉丝点击