`

二维码生成器

    博客分类:
  • code
 
阅读更多
二维码生成器

二维码的几个概念
容错率: setQrcodeErrorCorrect,
L-7%, M-15%, Q-25%, H-30%, 容错率越高可存储信息越少, 但对清晰度要求也越低
编码模式: setQrcodeEncodeMode
Numeric, Alphanumeric, Binary, Kanji, 即N-数字, A-英文, B-二进制, K-汉字
但这里还没搞清楚, 一般使用B, 使用N或A, 都只能识别数字, B-字母+数字
版本: setQrcodeVersion
设置二维码尺寸,取值范围1-40,值越大尺寸越大,可存储的信息越大
1-40, 每增加一个版本, 每边增加4个模块, 版本1-21X21, 版本2-25X25
1 21X21, 2 25X25, 40 177X177,

--------------------------------------------------

生成图片
大小与version相关
但还有2个: 填充单元, 偏移量
填充单元, 即每个码元填充多少个像素, 建议5
偏移量, 即背景边距, 建议10

如图
以version=1为例子, 内容为:www.65hj.com
这是原始, 1个像素填充1个码元, 背景边距为10



这是常用, 5个像素填充1个码元, 背景边距为10




--------------------------------------------------

核心算法包 qrcode
qrcode有2个, 一个是
com.swetake.util.Qrcode, 用于生成二维码
jp.sourceforge.qrcode.QRCodeDecoder, 用于解析二维码

--------------------------------------------------

图片大小为边长, 由于是矩形,
以version=1为例, 实际图片大小为 105X105
logo, 一般建议不超过边为的 1/20

version 码元 填充单元 边长 logo
1 21 5 105 5.25
2 25 5 125 6.25
3 29 5 145 7.25
4 33 5 165 8.25
5 37 5 185 9.25
6 41 5 205 10.25
7 45 5 225 11.25
8 49 5 245 12.25
9 53 5 265 13.25
10 57 5 285 14.25
11 61 5 305 15.25
12 65 5 325 16.25
13 69 5 345 17.25
14 73 5 365 18.25
15 77 5 385 19.25
16 81 5 405 20.25
17 85 5 425 21.25
18 89 5 445 22.25
19 93 5 465 23.25
20 97 5 485 24.25
21 101 5 505 25.25
22 105 5 525 26.25
23 109 5 545 27.25
24 113 5 565 28.25
25 117 5 585 29.25
26 121 5 605 30.25
27 125 5 625 31.25
28 129 5 645 32.25
29 133 5 665 33.25
30 137 5 685 34.25
31 141 5 705 35.25
32 145 5 725 36.25
33 149 5 745 37.25
34 153 5 765 38.25
35 157 5 785 39.25
36 161 5 805 40.25
37 165 5 825 41.25
38 169 5 845 42.25
39 173 5 865 43.25
40 177 5 885 44.25


--------------------------------------------------

填充内容(以8byte字母为标准)
详见附件: 二维码字符长度.xls
L M Q H
version text diff version text diff version text diff version text diff
1 17 1 14 1 11 1 7
2 32 15 2 26 12 2 20 9 2 14 7
3 53 21 3 42 16 3 32 12 3 24 10
4 78 25 4 62 20 4 46 14 4 34 10
5 106 28 5 84 22 5 60 14 5 44 10
6 134 28 6 106 22 6 74 14 6 58 14
7 154 20 7 122 16 7 86 12 7 64 6
8 192 38 8 152 30 8 108 22 8 84 20
9 230 38 9 180 28 9 130 22 9 98 14
10 271 41 10 213 33 10 151 21 10 119 21
11 321 50 11 251 38 11 177 26 11 137 18
12 367 46 12 287 36 12 203 26 12 155 18
13 425 58 13 331 44 13 241 38 13 177 22
14 458 33 14 362 31 14 258 17 14 194 17
15 520 62 15 412 50 15 292 34 15 220 26
16 586 66 16 450 38 16 322 30 16 250 30
17 644 58 17 504 54 17 364 42 17 280 30
18 718 74 18 560 56 18 394 30 18 310 30
19 792 74 19 624 64 19 442 48 19 338 28
20 858 66 20 666 42 20 482 40 20 382 44
21 929 71 21 711 45 21 509 27 21 403 21
22 1003 74 22 779 68 22 565 56 22 439 36
23 1091 88 23 857 78 23 611 46 23 461 22
24 1171 80 24 911 54 24 661 50 24 511 50
25 1273 102 25 997 86 25 715 54 25 535 24
26 1367 94 26 1059 62 26 751 36 26 593 58
27 1465 98 27 1125 66 27 805 54 27 625 32
28 1528 63 28 1190 65 28 868 63 28 658 33
29 1628 100 29 1264 74 29 908 40 29 698 40
30 1732 104 30 1370 106 30 982 74 30 742 44
31 1840 108 31 1452 82 31 1030 48 31 790 48
32 1952 112 32 1538 86 32 1112 82 32 842 52
33 2068 116 33 1628 90 33 1168 56 33 898 56
34 2188 120 34 1722 94 34 1228 60 34 958 60
35 2303 115 35 1809 87 35 1283 55 35 983 25
36 2431 128 36 1911 102 36 1351 68 36 1051 68
37 2563 132 37 1989 78 37 1423 72 37 1093 42
38 2699 136 38 2099 110 38 1499 76 38 1139 46
39 2809 110 39 2213 114 39 1579 80 39 1219 80
40 2953 144 40 2331 118 40 1663 84 40 1273 54



--------------------------------------------------

生成二维码

import com.swetake.util.Qrcode;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;

/**
 *
 * @author Administrator
 */
public class Demo {
	
	public static void main(String[] args) {
		System.out.println("start");
		try {
			BufferedImage img=create2DImage("www.65hj.com", 64);
			File file=new File("d:/temp/test.png");
			ImageIO.write(img, "png", file);
		} catch (Exception e) {
		}
		System.out.println("end");
	}
	
	public static BufferedImage create2DImage(String text, int size) {
		int pixUnit=5;	//每个二维码模块大小, 默认5像素, 即每个码元用5*5的像素块填充
		BufferedImage img=null;
		try {
			Qrcode qrcode=new Qrcode();
			//设置二维码容错率, L-7%, M-15%, Q-25%, H-30%, 容错率越高可存储信息越少, 但对清晰度要求也越低
			qrcode.setQrcodeErrorCorrect('M');
			//编码模式 Numeric, Alphanumeric, Binary, Kanji, 即N-数字, A-英文, B-二进制, K-汉字
			//但这里还没搞清楚, 一般使用B, 使用N或A, 都只能识别数字, B-字母+数字
			qrcode.setQrcodeEncodeMode('B');
			//设置设置二维码尺寸,取值范围1-40,值越大尺寸越大,可存储的信息越大
			//1-40, 每增加一个版本, 每边增加4个模块, 版本1-21X21, 版本2-25X25
			//1 21X21, 2 25X25, 40 177X177,
			qrcode.setQrcodeVersion(10);
			//文本编码格式
			byte[] b = text.getBytes("utf-8");
			boolean[][] flag=qrcode.calQrcode(b);
			
			//设置偏移量, 不设置可能导致解析出错
			int pixoff=10;
			//图片尺寸, 码元宽度(或高度)*码元填充单元+背景底色边距
			//如version=1, 码元尺寸为21*21, 每个码元使用5个像素填充, 与背景底色的四边边宽各为10, 则如下
			//21*5+(10*2)=125
			int imgSize=flag.length*pixUnit+pixoff*2;
			System.out.println("flag length: "+flag.length+", "+flag[0].length);
			System.out.println("img size: "+imgSize);
			img=new BufferedImage(imgSize, imgSize, BufferedImage.TYPE_INT_RGB);
			
			//设置背景颜色
			Graphics2D gs=img.createGraphics();
			gs.setBackground(Color.WHITE);
			gs.clearRect(0, 0, imgSize, imgSize);
			//设置前景颜色
			gs.setColor(Color.BLACK);
			//输出内容>二维码
			if(flag.length>0 && flag.length<200){
				for(int i=0;i<flag.length;i++){
					for(int j=0;j<flag.length;j++){
						if(flag[j][i]){
							gs.fillRect(j*pixUnit+pixoff, i*pixUnit+pixoff, pixUnit-1, pixUnit-1);
						}
					}
				}
			}else{
				throw new Exception("二维码内容错误");
			}
			gs.dispose();
			img.flush();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return img;
	}
}

  • 大小: 241 Bytes
  • 大小: 469 Bytes
分享到:
评论

相关推荐

    微信小程序 二维码生成器 (源码)

    微信小程序 二维码生成器 (源码)微信小程序 二维码生成器 (源码)微信小程序 二维码生成器 (源码)微信小程序 二维码生成器 (源码)微信小程序 二维码生成器 (源码)微信小程序 二维码生成器 (源码)微信小程序 二维码...

    小程序源码 二维码生成器 (代码+截图)

    小程序源码 二维码生成器 (代码+截图)小程序源码 二维码生成器 (代码+截图)小程序源码 二维码生成器 (代码+截图)小程序源码 二维码生成器 (代码+截图)小程序源码 二维码生成器 (代码+截图)小程序源码 二维码生成器 ...

    二维码生成器(微信小程序)源码.zip

    二维码生成器,一款可以生成二维码的微信小程序。可以生成带LOGO的二维码,也可以设置二维码颜色。 二维码生成器,一款可以生成二维码的微信小程序。可以生成带LOGO的二维码,也可以设置二维码颜色。 二维码生成...

    解压全能我那个二维码生成器加手机安卓程序非精简版

    标题中的“解压全能我那个二维码生成器加手机安卓程序非精简版”指的是一个集成了解压缩功能和二维码生成器的软件应用,特别强调了这不是精简版本,意味着它包含完整的功能集。 1. **解压缩软件**:在IT行业中,解...

    电脑二维码生成器

    二维码生成器是一种便捷的信息编码工具,它能够将各种数据,如文字、网址、名片信息、电子邮箱、电话号码等,转换成二维图形——二维码,供手机、电子扫描器等设备快速读取。在电脑上使用二维码生成器,可以极大地...

    微信小程序 小工具类 二维码生成器 (源代码+截图)

    微信小程序 小工具类 二维码生成器 (源代码+截图)微信小程序 小工具类 二维码生成器 (源代码+截图)微信小程序 小工具类 二维码生成器 (源代码+截图)微信小程序 小工具类 二维码生成器 (源代码+截图)微信小...

    微信小程序源码 二维码生成器(学习版)

    微信小程序源码 二维码生成器(学习版)微信小程序源码 二维码生成器(学习版)微信小程序源码 二维码生成器(学习版)微信小程序源码 二维码生成器(学习版)微信小程序源码 二维码生成器(学习版)微信小程序源码 二维码生成...

    二维码生成器PC版【中文】

    二维码生成器是一款在个人计算机(PC)上使用的应用程序,专门设计用于创建各种类型的数据编码为二维码,便于快速扫描和信息传递。这款中文版的二维码生成器界面友好,操作简便,适用于那些希望在数字营销、信息分享...

    解压缩全能王二维码生成器exe文件+手机apk

    在标题中提到的“二维码生成器exe文件”,这可能是指该软件内集成了二维码生成功能,用户可以通过这个工具创建二维码,方便地分享数据或者链接。 对于“解压加密解压”这一标签,这意味着解压缩全能王具备处理加密...

    二维码生成器(绝对可用)

    二维码生成器是一种便捷的技术,能够将各种数据,如网址、文本、联系信息等,转换成图形化的二维码,便于快速扫描和读取。本项目利用C#编程语言,并借助NuGet包管理器引入了第三方组件QrCodeNet,使得开发者能够轻松...

    二维码生成器并加密(js+servlet)

    二维码生成器是一种将数据编码为二维图形的工具,广泛应用于移动支付、信息分享、广告推广等领域。在这个项目中,我们采用JavaScript(js)与Servlet技术来实现一个在线的二维码生成器。JavaScript是一种运行在...

    ios-条形码,二维码生成器.zip

    "ios-条形码,二维码生成器.zip" 提供了一个解决方案,帮助开发者实现在iOS设备上动态生成条形码和二维码,并且考虑到了扫描设备的兼容性问题。下面我们将详细探讨相关知识点。 1. **条形码与二维码的原理**: ...

    二维码生成器.rar

    二维码生成器是一款便捷实用的工具,它可以帮助用户快速创建各种类型的二维码,无需复杂的设置和专业知识。这个压缩包“二维码生成器.rar”包含了一个名为“二维码生成器.exe”的可执行文件,意味着它是一个绿色免...

    尼欧二维码生成器

    尼欧二维码生成器是一款专为用户设计的便捷二维码制作工具,尤其针对中国移动和中国联通的通讯信息格式进行了优化,使得在生成名片、文档、URL和短信等类型的二维码时更加方便高效。这款软件支持多种数据类型转换成...

    二维码生成器下载-网页自动生成二维码

    二维码生成器是一款非常实用的工具,它允许用户通过简单的步骤将网页链接转化为二维码,以便于他人通过手机扫描直接访问该网页。在这个数字化的时代,二维码已经广泛应用于各种场景,如产品宣传、信息分享、电子支付...

    二维码生成器.zip

    二维码生成器是一款便捷的软件工具,它允许用户轻松地创建自己的二维码。二维码,全称二维条形码,是一种能够存储大量信息的图形编码方式。它将数据转化为黑白相间的图形,通过手机摄像头或其他扫描设备读取后,可以...

    二维码生成器-完美版

    极度完美的二维码生成器,功能全面,经过完美破解,无需安装,解压就可以用。 二维码解析率和大小可调

    DM二维码生成器

    本项目“DM二维码生成器”是基于C#编程语言开发的,专注于生成DataMatrix类型的二维码,这种二维码格式具有较高的数据密度和容错能力,尤其适合在小空间内存储大量信息。 DataMatrix二维码是由二维条形码标准定义的...

Global site tag (gtag.js) - Google Analytics