Qrcode生成二维码工具类
来源:互联网 发布:腾讯传奇霸业羽毛数据 编辑:程序博客网 时间:2024/05/16 19:26
Qrcode生成二维码工具类
package com.qrcode.util;import java.awt.Color;import java.awt.Graphics2D;import java.awt.Image;import java.awt.image.BufferedImage;import java.io.ByteArrayOutputStream;import java.io.File;import java.io.ObjectOutputStream;import javax.imageio.ImageIO;import com.swetake.util.Qrcode;/** * 生成二维码工具类 * @author pengfei.xiong */public class QrcodeUtil { /** * 二维码生成核心方法 * @param content 二维码存储的内容 * @param imgPath 二维码图片路径 * @param logoPath 中间logo的图片路径 * @throws Exception 异常 */ public static void getQrocodeImg(String content,String imgPath,String logoPath) throws Exception{ //实例化qecode对象 Qrcode qrcode = new Qrcode(); //设置排错率15%空间 错误信息 qrcode.setQrcodeErrorCorrect('M'); //二维码存储内容的编码集 qrcode.setQrcodeEncodeMode('B'); //设置二维码的版本 1-40 值越大尺寸越大,可存储的信息越大 qrcode.setQrcodeVersion(15); //准备绘制二维码 画画条件:画板 画笔 int width = 235; //宽 int height = 235; //高 //创建画板 BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); //绘制工具 Graphics2D gs =image.createGraphics(); //设置背景颜色 gs.setBackground(Color.white); //开始绘制矩形 gs.clearRect(0, 0, width, height); //设置前景色 gs.setColor(Color.black); //接受内容 // byte[] codeOut = objectToByte(content); byte[] codeOut; codeOut = content.getBytes("utf-8"); //通过byte数组获取boolean 类型二维码 boolean[][] code = qrcode.calQrcode(codeOut); //遍历这个二维数组 for (int i = 0; i < code.length; i++) { for (int j = 0; j < code.length; j++) { //如果是真的就涂黑 if (code[i][j]) { gs.fillRect(j*3+2, i*3+2, 3, 3); } } } //加入中间logo Image img= ImageIO.read(new File(logoPath)); //80,80是距离gs两个边的距离,55,55是中间logo的大小 gs.drawImage(img,80,80,75,75,null); //释放资源 image.flush(); gs.dispose(); image.flush(); //写入指定路径 ImageIO.write(image, "png", new File(imgPath)); System.out.println("二维码生成成功!"); } public static void main(String[] args) { try { /*Student stu = new Student("test", 11); stu.setId(10);*/ getQrocodeImg("http://baidu.com", "D:/Qrcode/qrcode.png","src/com/qrcode/util/images/p1.jpg"); } catch (Exception e) { e.printStackTrace(); } } /** * Object转换为byte[] * @param object * @return byte[]数组 */ public static byte[] objectToByte(java.lang.Object object){ byte[] bytes = null; ByteArrayOutputStream bo = new ByteArrayOutputStream(); try { ObjectOutputStream oo = new ObjectOutputStream(bo); oo.writeObject(object); bytes = bo.toByteArray(); bo.close(); oo.close(); } catch (Exception e) { e.printStackTrace(); } return bytes; }}
这个工具类生成的二维码目前只能存储字符串和网页路径,要存更多内容和对象的话,自己改下,也希望能大神能贴出更好的!需要导入的包有Qrcode_swetake.jar,自行百度找一个
找不到的话这是jar链接 : http://download.csdn.net/download/xpf_user/10029120
阅读全文
0 0
- Qrcode生成二维码工具类
- qrcode生成,二维码生成
- PHP生成二维码图像的类QRcode
- QRcode php生成二维码
- qrcode二维码生成/解析
- query-qrcode生成二维码
- 使用QRCode生成二维码
- jquery.qrcode生成二维码
- 利用QRCode生成二维码
- QRcode生成二维码
- 利用QRCode生成二维码
- 利用QrCode生成二维码
- QRCode生成二维码
- java生成二维码QRCode
- STM32+QRCode二维码生成
- MSP430+QRCode二维码生成
- Qrcode生成二维码
- QRcode生成二维码
- 静态链接库与动态链接库----C/C++
- 定点化
- 12串口通信的定义-2
- java中的代码点和代码单元
- tomcat启动时出现了Failed to start component [StandardEngine[Catalina].StandardHost[localhost]]等错误
- Qrcode生成二维码工具类
- string::assign函数
- widows系统中JDK配置
- win10下微软office2010卸载
- 我的Laravel学习之路之模板继承
- Android数据库批量操作
- solr no servers hosting shard 503 SolrCloud分布式检索时忽略宕机的Shard
- linux 环境变量设置(临时 + 永久)
- JAVA提高篇(34)-- Java多线程的同步与死锁