利用QRCode实现待logo的二维码的创建

简介: 1 import java.awt.Color; 2 import java.awt.Graphics2D; 3 import java.awt.Image; 4 import java.
 1 import java.awt.Color;
 2 import java.awt.Graphics2D;
 3 import java.awt.Image;
 4 import java.awt.image.BufferedImage;
 5 import java.io.File;
 6 
 7 import javax.imageio.ImageIO;
 8 
 9 import com.swetake.util.Qrcode;
10 
11 
12 
13 /**
14  * @author GH
15  *
16  */
17 public class BarcodeFactory {
18     
19     
20     public static int createQRCode(String content, String imgPath,String ccbPath,int version) {    
21         try {    
22             Qrcode qrcodeHandler = new Qrcode();    
23             //设置二维码排错率,可选L(7%)、M(15%)、Q(25%)、H(30%),排错率越高可存储的信息越少,但对二维码清晰度的要求越小    
24             qrcodeHandler.setQrcodeErrorCorrect('M');    
25             //N代表数字,A代表字符a-Z,B代表其他字符  
26             qrcodeHandler.setQrcodeEncodeMode('B');   
27             // 设置设置二维码版本,取值范围1-40,值越大尺寸越大,可存储的信息越大    
28             qrcodeHandler.setQrcodeVersion(version);   
29             // 图片尺寸    
30             int imgSize =67 + 12 * (version - 1) ;  
31     
32             byte[] contentBytes = content.getBytes("gb2312");    
33             BufferedImage image = new BufferedImage(imgSize, imgSize, BufferedImage.TYPE_INT_RGB);    
34             Graphics2D gs = image.createGraphics();    
35     
36             gs.setBackground(Color.WHITE);    
37             gs.clearRect(0, 0, imgSize, imgSize);    
38     
39             // 设定图像颜色 > BLACK    
40             gs.setColor(Color.BLUE);    
41     
42             // 设置偏移量 不设置可能导致解析出错    
43             int pixoff = 2;    
44             // 输出内容 > 二维码    
45             if (contentBytes.length > 0 && contentBytes.length < 130) {  
46                 boolean[][] codeOut = qrcodeHandler.calQrcode(contentBytes);  
47                 for (int i = 0; i < codeOut.length; i++) {  
48                     for (int j = 0; j < codeOut.length; j++) {  
49                         if (codeOut[j][i]) {  
50                             gs.fillRect(j * 3 + pixoff, i * 3 + pixoff, 3, 3);  
51                         }  
52                     }  
53                 }  
54             } else {    
55                 System.err.println("QRCode content bytes length = "    
56                         + contentBytes.length + " not in [ 0,125]. ");    
57                 return -1;  
58             }    
59             Image logo = ImageIO.read(new File(ccbPath));//实例化一个Image对象。  
60             int widthLogo = logo.getWidth(null)>image.getWidth()*2/10?(image.getWidth()*2/10):logo.getWidth(null),   
61                 heightLogo = logo.getHeight(null)>image.getHeight()*2/10?(image.getHeight()*2/10):logo.getWidth(null);  
62              
63              /** 
64                * logo放在中心 
65               */  
66             int x = (image.getWidth() - widthLogo) / 2;  
67             int y = (image.getHeight() - heightLogo) / 2;  
68             gs.drawImage(logo, x, y, widthLogo, heightLogo, null);  
69             gs.dispose();    
70             image.flush();    
71     
72             // 生成二维码QRCode图片    
73             File imgFile = new File(imgPath);    
74             ImageIO.write(image, "png", imgFile);    
75     
76         } catch (Exception e)   
77         {    
78             e.printStackTrace();    
79             return -100;  
80         }    
81           
82         return 0;  
83     }    
84     public static void main(String[] args) {
85              String imgPath = "D:/二维码生成/logo_QRCode.png";   
86             String logoPath = "D:/logo/logo1.jpg";
87             String encoderContent = "https://blog.csdn.net/gao36951/article/details/41149049";
88             BarcodeFactory.createQRCode(encoderContent, imgPath, logoPath,8); 
89     }
90 }

 

欢迎大家一起说出自己的想法。
目录
相关文章
|
11月前
|
前端开发
hover后元素边框变粗,样式被挤压?一招帮你解决,快收藏备用!
【10月更文挑战第15天】hover后元素边框变粗,样式被挤压?一招帮你解决,快收藏备用!
192 14
hover后元素边框变粗,样式被挤压?一招帮你解决,快收藏备用!
|
人工智能 自然语言处理 语音技术
利用Python进行自然语言处理(NLP)
【4月更文挑战第9天】本文探讨了如何使用Python进行自然语言处理(NLP),包括文本预处理、语言模型构建和情感分析等任务。Python凭借强大的库支持在NLP领域广泛应用。文本预处理涉及转小写、去除标点和停用词,可使用NLTK库实现。语言模型如n-gram用于计算句子概率,而情感分析则可借助TextBlob判断文本情感倾向。此外,spaCy库可用于命名实体识别,识别文本中的特定实体。Python为NLP提供了高效、灵活的解决方案。
267 6
|
前端开发 安全 JavaScript
Ajax都有哪些优点和缺点?
Ajax都有哪些优点和缺点?
|
分布式计算 Java Hadoop
【java】——java项目之逆向工程完结
来到这个公司已经有三个月左右了,一直没有在java方面施展自己的才华,检测自己的容器,终于在大约半个月前,由于公司外包出去的一个java项目需求迭代改动有所繁杂,外包公司衡量该项目无法得到预计收利;最终跟我们公司在合同方面直接谈崩(这只是我了解到的部分原因)。
|
Linux
linux基本功系列之mkdir命令实战
linux基本功系列之mkdir命令实战
246 0
linux基本功系列之mkdir命令实战
|
算法 前端开发
力扣-二叉树的层序遍历
力扣-二叉树的层序遍历
147 0
力扣-二叉树的层序遍历
|
XML 数据格式
一起来了解XPath吧!
一起来了解XPath吧!
159 0
|
机器人
Robot Framework(6)- BuiltIn 测试库常用的关键字列表
Robot Framework(6)- BuiltIn 测试库常用的关键字列表
323 0
Robot Framework(6)- BuiltIn 测试库常用的关键字列表
我的博客即将入驻“云栖社区”,诚邀技术同仁一同入驻。
我的博客即将入驻“云栖社区”,诚邀技术同仁一同入驻。 &nbsp;&nbsp;&nbsp; Austin Liu&nbsp; 刘恒辉 &nbsp;&nbsp;&nbsp; Department Manager,Product Manager,Project Manager and Software Designer &nbsp;&nbsp;&nbsp; E-Mail:lzhdim@163.
1390 0
|
网络安全 数据安全/隐私保护 安全