博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
利用QRCode实现待logo的二维码的创建
阅读量:7260 次
发布时间:2019-06-29

本文共 3563 字,大约阅读时间需要 11 分钟。

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 GH15  *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 }

 

欢迎大家一起说出自己的想法。
你可能感兴趣的文章
导出excel——入门
查看>>
设计模式(十)享元模式Flyweight(结构型)
查看>>
有图有真相!同是滑屏,荣耀Magic2不只比小米MIX3缝隙小,还更稳定
查看>>
AI+云 华为开启智能时代新纪元
查看>>
就是好骑!骑ofo小黄蜂和舒畅早晨say hi,跟闹心堵车say bye
查看>>
张旭豪:外卖概念的三点进化
查看>>
机构:去年购房者平均年龄近30岁
查看>>
天津:第十六届西青区民俗文化旅游节开幕
查看>>
[译]Reduce(软件编写)(第五部分)
查看>>
Android 插件框架机制之Small
查看>>
The Best Way to Export an SVG from Sketch
查看>>
透过 OKR 进行项目过程管理
查看>>
javascript中创建对象的几种方式
查看>>
BCH虫洞项目有多安全以及WHC究竟能干什么?
查看>>
硬分叉升级越来越近,BCH社区都在做什么?
查看>>
基于 MVP 的 Android 组件化开发框架实践
查看>>
深度解析HashMap
查看>>
laravel 中创建全局函数 (类似于 TP 中 functions.php) 的方式
查看>>
生产级部署 Python 脚本,崩溃可自启!
查看>>
JavaScript设计模式系列四之外观模式(附案例源码)
查看>>