利用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 }

 

欢迎大家一起说出自己的想法。
目录
相关文章
|
JavaScript
vue里怎么生成带有图标logo的二维码?
vue里怎么生成带有图标logo的二维码?
385 0
vue里怎么生成带有图标logo的二维码?
利用Qrcode生成二维码
``` import com.swetake.util.Qrcode; import javax.imageio.ImageIO; import java.awt.*; import java.awt
128 0
29使用QRcode方式生成二维码
29使用QRcode方式生成二维码
205 0
29使用QRcode方式生成二维码
|
Java
带圆角LOGO的QrCode二维码实时生成
最近工作中经常要用到QrCode二维码,研究了一下,写了个带圆角LOGO的JAVA实现,QrCode之所以能在中间放个LOGO图标,是因为编码时的信息冗余。
2066 0
|
JavaScript 前端开发
带有logo的二维码
带有logo的二维码
带有logo的二维码
|
程序员 C# 图形学
C# 生成二维码,彩色二维码,带有Logo的二维码及普通条形码
每次写博客,第一句话都是这样的:程序员很苦逼,除了会写程序,还得会写博客!当然,希望将来的一天,某位老板看到此博客,给你的程序员职工加点薪资吧!因为程序员的世界除了苦逼就是沉默。我眼中的程序员大多都不爱说话,默默承受着编程的巨大压力,除了技术上的交流外,他们不愿意也不擅长和别人交流,更不乐意任何人走进他们的内心!    废话少说,咱直接进入正题:    目前来说,比较流行的二维码生成方式有两种:一种是:QrCode.Net和谷歌的Zxing.Net,我个人比较倾向于使用ZXing.Net,今天本篇博客主要讲解Zxing.Net的使用。
1975 0
QRCode二维码生成方案及其在带LOGO型二维码中的应用(2)
原文:QRCode二维码生成方案及其在带LOGO型二维码中的应用(2) 续前:QRCode二维码生成方案及其在带LOGO型二维码中的应用(1)  http://blog.csdn.net/johnsuna/article/details/8525038 首先我们来看看二维码的符号字符区域,然后再看看其编码流程。
1509 0
QRCode二维码生成方案及其在带LOGO型二维码中的应用(1)
原文:QRCode二维码生成方案及其在带LOGO型二维码中的应用(1) 提要:很多公司为商业宣传之需,常将企业LOGO加入二维码中,但如果LOGO遮挡区域足够地大,二维码就变得无法识别。
1557 0
|
Shell C# 图形学
C#生成带logo的二维码
原文:C#生成带logo的二维码 带logo的二维码生成分为两步骤:首先根据输入的内容生成二维码图片,然后读取本地的logo图片,通过图片处理生成带logo的二维码。 生成的二维码效果如下: 下面直接贴出二维码生成类   QRCodeHelper.
1242 0