logo资料库

微信二维码生成文档(java开发).doc

第1页 / 共6页
第2页 / 共6页
第3页 / 共6页
第4页 / 共6页
第5页 / 共6页
第6页 / 共6页
资料共6页,全文预览结束
一、引用第三方jar包说明
二、com.swetake.util.Qrcode的方法说明
2.1方法setqrcodeerrorr()
2.2 方法etqrcodeencodemode()
2.3方法setqrcodeversion()
2.4方法calQrcode()
三、图片中间带logo的二维码生成实例
四、测试类
目 录 一、引用第三方 jar 包说明...........................................................1 二、com.swetake.util.Qrcode 的方法说明..................................... 1 2.1 方法 setqrcodeerrorr().......................................................1 2.2 方法 etqrcodeencodemode()............................................1 2.3 方法 setqrcodeversion().....................................................1 2.4 方法 calQrcode()................................................................1 三、图片中间带 logo 的二维码生成实例......................................2 四、测试类..................................................................................... 4
一、引用第三方 jar 包说明 二维码生成主要通过第三方 jar 包 com.swetake.util.Qrcode 进 行实现的; jar 下载地址: http://swetake.com/qrcode/java/qr_java.html Api 地址:http://www.swetake.com/qrcode/java/docs/index.html 二、com.swetake.util.Qrcode 的方法说明 2.1 方法 setqrcodeerrorr() public void setqrcodeerrorr(char ecc) 设定错误校正级别, 设置二维码的纠错级别(排错率),共有四级:可选 L(7%)、M(15%)、 Q(25%)、H(30%)(最高 H),纠错信息同样存储在二维码中,纠错级别 越高,纠错信息占用的空间越多,那么能存储的有用信息就越少,对 二维码清晰度的要求越小。 参数:char ecc 纠错级别(L、M、Q、H) 2.2 方法 etqrcodeencodemode() public void setqrcodeencodemode(char encmode) 设定编码模式:“n”:数字模式“a”:英文数字模式其他:8 比 特字节模式 参数:encmode -编码模式(“n”、“a”或其他) 2.3 方法 setqrcodeversion() public void setqrcodeversion(int ver) 设定版本:设定 0 的话会自 动设定,二维码的版本号也象征着二维码的信息容量;二维码可以看 成一个黑白方格矩阵,版本不同,矩阵长宽方向方格的总数量分别不 同。 1-40 总共 40 个版本,版本 1 为 21*21 矩阵,版本每增 1,二维 码的两个边长都增 4; 版本 2 为 25x25 模块,最高版本为是 40,是 177*177 的矩阵。 参数:int ver 版本(1-40),信息容量 2.4 方法 calQrcode() public boolean[][] calQrcode(byte[] qrcodeData) 从给定的数据队列中,将 qr 码的编码数据以 boolean 二维数组 的形式返回。 参数:byte[] qrcodeData 二维码内容数组 1
三、图片中间带 logo 的二维码生成实例 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; public class Logo_Two_Code { /** * 生成二维码(QRCode)图片 * * @param content * * @param imgPath * * @param ccbpath * */ public static int createQRCode(String content, String imgPath, 二维码图片中间的 logo 路径 二维码图片的内容 生成二维码图片完整的路径 String ccbPath) { try { // 实例化二维码生成器 Qrcode qrcodeHandler = new Qrcode(); // 设置二维码的纠错级别(排错率),共有四级:可选 L(7%)、M(15%)、Q(25%)、 H(30%)(最高 H) //纠错信息同样存储在二维码中,纠错级别越高,纠错信息占用的空间越多,那么能存储的有用信息 就越少,对二维码清晰度的要求越小 qrcodeHandler.setQrcodeErrorCorrect('M'); 2
// 编码模式 :N 代表数字,A 代表字符 a-Z,B 代表其他字符,二进制 qrcodeHandler.setQrcodeEncodeMode('B'); // 二维码的版本号:也象征着二维码的信息容量;二维码可以看成一个黑白方格矩阵, 版本不同,矩阵长宽方向方格的总数量分别不同。 1-40 总共 40 个版本,版本 1 为 21*21 矩阵,版本每 增 1,二维码的两个边长都增 4; 版本 2 为 25x25 模块,最高版本为是 40,是 177*177 的矩阵; qrcodeHandler.setQrcodeVersion(8); // 获取内容的字节数组,设置编码格式 byte[] contentBytes = content.getBytes("gbk"); // 创建一个不带透明色的 BufferedImage 对象 ,其中图片尺寸,会根据 version 的变 大,而变大,自己需要计算 BufferedImage bufImg = new BufferedImage(150, 150, BufferedImage.TYPE_INT_RGB); //获取画笔 Graphics2D gs = bufImg.createGraphics(); //设置背景色 白色 gs.setBackground(Color.WHITE); gs.clearRect(0, 0, 150, 150); // 设定图像颜色 > BLACK gs.setColor(Color.black); // 设置偏移量 不设置可能导致解析出错 int pixoff = 2; // 输出内容 > 二维码,遍历二维码内容数组 if (contentBytes.length > 0 && contentBytes.length < 150) { boolean[][] codeOut = qrcodeHandler.calQrcode(contentBytes); for (int i = 0; i < codeOut.length; i++) { for (int j = 0; j < codeOut.length; j++) { if (codeOut[j][i]) { //填充指定的矩形。该矩形左边缘和右边缘分别位于 x 和 x + width - 1。上边缘和下边缘分别 位于 y 和 y + height - 1。得到的矩形覆盖 width 像素宽乘以 height 像素高的区域。使用图形 3
gs.fillRect(j * 3 + pixoff, i * 3 + pixoff, 3, 3); 上下文的当前颜色填充该矩形。 } } } } else { System.err.println("QRCode content bytes length = " + contentBytes.length + " not in [ 0,125]. "); return -1; } // 实例化一个 Image 对象。 Image img = ImageIO.read(new File(ccbPath)); gs.drawImage(img, 60, 60, null); gs.dispose(); bufImg.flush(); // 生成二维码 QRCode 图片 File imgFile = new File(imgPath); ImageIO.write(bufImg, "png", imgFile); } catch (Exception e) { e.printStackTrace(); return -100; } return 0; } 四、测试类 public static void main(String[] args) { // 生成二维码图片完整的路径 String imgPath = "D:\\twocode\\Default111.png"; // 二维码图片中 logo 的图片路径 String ccbPath = "D:\\twocode\\Default.png"; 4
// 生成二维码的内容 String encoderContent = "www.baidu.com"; // 定义生成二维码的类 Logo_Two_Code logo_Two_Code = new Logo_Two_Code(); // 调用生成二维码的方法 Logo_Two_Code.createQRCode(encoderContent, imgPath, ccbPath); } } 5
分享到:
收藏