`

二维码生成器

    博客分类:
  • 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的二维码,也可以设置二维码颜色。 二维码生成...

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

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

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

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

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

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

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

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

    二维码生成器-完美版

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

    java二维码生成器

    通过java代码实现的二维码生成器,这种二维码生成器是有加密操作的

    基于微信小程序的二维码生成器源码.rar

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

    创易二维码生成器v2.3免费绿色版

    创易二维码生成器是一款二维码生成器工具,能够在台式电脑上帮您生成二维码,支持微信,文本、网址、名片、电话、短信和wifi网络等二维码,需要的朋友快来下载吧。 功能介绍 文本二维码:输入文本文字自动将其转换...

    微信小程序开发-二维码生成器案例源码.zip

    微信小程序开发-二维码生成器案例源码.zip

    手机二维码生成器

    手机二维码生成器:二维条码/二维码(2D barcode) 是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的;在代码编制上巧妙地利用构成计算机内部逻辑基础的“0”、“1”...

    二维码生成器可以制作多种支付功能

    二维码生成器可以制作多种支付功能,是做支付功能的小伙伴们必备神器,传入参数,即可生成支付二维码,进行支付功能操作

    VB简易二维码生成器

    VB简易二维码生成器

    微信二维码生成器

    微信二维码生成器可以生成文字内容!网站网址!等等!

Global site tag (gtag.js) - Google Analytics