二维码图片生成

new QREncoder().encoderQRCode("12345678910", "D:/YYYYY.png", 10);

package com.XXXX.qrcode;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;

import com.swetake.util.Qrcode;

public class QREncoder {

/**
* 生成二维码(QRCode)图片
* @param content 二维码内容
* @param imgPath 生成图片地址
* @param size 二维码大小
*/
public void encoderQRCode(String content, String imgPath, int size) {
int ver = 3;
int s = 2;
int imgSize = 61;
if (size == 0) {

} else if (size == 1) {
ver = 3;
s = 3;
imgSize = 91;
} else if (size == 2) {
ver = 3;
s = 4;
imgSize = 120;
} else if (size == 3) {
ver = 3;
s = 5;
imgSize = 150;
} else if (size == 4) {
ver = 4;
s = 5;
imgSize = 168;
} else if (size == 5) {
ver = 5;
s = 5;
imgSize = 190;
} else if (size == 6) {
ver = 5;
s = 6;
imgSize = 228;
} else if (size == 7) {
ver = 5;
s = 7;
imgSize = 260;
} else if (size == 8) {
ver = 6;
s = 8;
imgSize = 330;
} else if (size == 9) {
ver = 6;
s = 9;
imgSize = 370;
} else {
throw new RuntimeException("二维码尺寸不合法,size只包含:0-9");
}

try {

Qrcode qrcodeHandler = new Qrcode();
qrcodeHandler.setQrcodeErrorCorrect(‘M‘);
qrcodeHandler.setQrcodeEncodeMode(‘B‘);
qrcodeHandler.setQrcodeVersion(ver);
byte[] contentBytes = content.getBytes("GBK");

BufferedImage bufImg = new BufferedImage(imgSize, imgSize, BufferedImage.TYPE_INT_RGB);

Graphics2D gs = bufImg.createGraphics();

// 设置背景颜色
gs.setBackground(Color.WHITE);
gs.clearRect(0, 0, imgSize, imgSize);

// 设定图像颜色 > BLACK
gs.setColor(Color.BLACK);

// 设置偏移量 不设置可能导致解析出错
int pixoff = 2;
// 输出内容 > 二维码
if (contentBytes.length > 0 && contentBytes.length < 2331) {
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]) {
gs.fillRect(j * s + pixoff, i * s + pixoff, s, s);
}
}
}
} else {
System.err.println("QRCode content bytes length = " + contentBytes.length + " not in [ 0,2331 ]. ");
}

gs.dispose();
bufImg.flush();

File imgFile = new File(imgPath);

// 生成二维码QRCode图片
ImageIO.write(bufImg, "png", imgFile);

// scale("D:/QRCode.png", "D:/XXXX.png", 2, false);
} catch (Exception e) {
e.printStackTrace();
}

}

/**
* 缩放图像
* @param srcImageFile 源图像文件地址
* @param result 缩放后的图像地址
* @param scale 缩放比例
* @param flag 缩放选择:true 放大; false 缩小;
*/
public void scale(String srcImageFile, String result, int scale, boolean flag) {
try {
BufferedImage src = ImageIO.read(new File(srcImageFile)); // 读入文件
int width = src.getWidth(); // 得到源图宽
int height = src.getHeight(); // 得到源图长
// System.out.println(width);
// System.out.println(height);

if (flag) {
// 放大
width = width * scale;
height = height * scale;
} else {
// 缩小
width = width / scale;
height = height / scale;
}
width = 200;
height = 200;

Image image = src.getScaledInstance(width, height, Image.SCALE_DEFAULT);
BufferedImage tag = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics g = tag.getGraphics();
g.drawImage(image, 0, 0, null); // 绘制缩小后的图
g.dispose();
ImageIO.write(tag, "png", new File(result));// 输出到文件流

} catch (IOException e) {
e.printStackTrace();
}
}

}

时间: 2024-12-12 05:51:14

二维码图片生成的相关文章

CIImage与二维码图片生成

代码: #import "ViewController.h" #import <CoreImage/CoreImage.h> @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; UIImage *qrImage = [self qrCodeImageForString:@"http://www.baidu.com" sideLength:300]; // co

二维码图片生成(扩展知识:创建带圆角效果的图片)

效果如下: ViewController.h 1 #import <UIKit/UIKit.h> 2 @interface ViewController : UIViewController 3 @property (strong, nonatomic) IBOutlet UIImageView *imgVQRCode; 4 5 @end ViewController.m 1 #import "ViewController.h" 2 #import "KMQRCo

Winform 利用ThoughtWorks.QRCode 生成二维码,并另存为二维码图片(限制大小)

第一步首先:下载ThoughtWorks.QRCode.dll 放置到项目Bin目录下,然后右键项目添加引用: 第二步界面代码: #region Windows 窗体设计器生成的代码 /// <summary> /// 设计器支持所需的方法 - 不要 /// 使用代码编辑器修改此方法的内容. /// </summary> private void InitializeComponent() { this.groupBox1 = new System.Windows.Forms.Gr

二维码的生成细节和原理

二维码的生成细节和原理 二维码又称QR Code,QR全称Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的Bar Code条形码能存更多的信息,也能表示更多的数据类型:比如:字符,数字,日文,中文等等.这两天学习了一下二维码图片生成的相关细节,觉得这个玩意就是一个密码算法,在此写一这篇文章 ,揭露一下.供好学的人一同学习之. 关于QR Code Specification,可参看这个PDF:http://raidenii.net/files/datashee

二维码的生成细节和原理【转】

二维码又称 QR Code,QR 全称 Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的 Bar Code 条形码能存更多的信息,也能表示更多的数据类型:比如:字符,数字,日文,中文等等.这两天学习了一下二维码图片生成的相关细节,觉得这个玩意就是一个密 码算法,在此写一这篇文章 ,揭露一下.供好学的人一同学习之. 关于 QR Code Specification,可参看这个 PDF:http://raidenii.net/files/datasheets/m

Android二维码的生成算法原理简介

二维码的定义:二维码 (2-dimensional bar code),是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的.在许多种类的二维条码中,常用的码制有:Data Matrix, Maxi Code, Aztec, QR Code, Vericode, PDF417, Ultracode, Code 49, Code 16K等.1.堆叠式/行排式二维条码,如,Code 16K.Code 49.PDF417(如下图)等2.矩阵式二维码,最流行莫过于Q

随手记一次利用开源zxing生成带嵌入logo的二维码图片

之前就在项目里面用过zxing生成二维码,最近另一个项目同样需要用到二维码,故重新在学了学利用zxing生成二维码 接下来先做准备工作了,因为我是用vs2013上开发的,故选择了.net4.5版本的zxing.dll.另外准备了一张准备嵌入的图片,代码如下: 1 using System; 2 using System.Collections; 3 using System.Collections.Generic; 4 using System.Drawing; 5 using System.L

JAVA生成二维码图片代码

首先需要导入 QRCode.jar 包 下载地址看这里   http://pan.baidu.com/s/1o6qRFqM import java.awt.Color;import java.awt.Graphics2D;import java.awt.Image;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;import java.io.UnsupportedEncoding

C#生成二维码图片

使用C#生成二维码图片,并保存到指定的目录. 1.添加对生成二维码图片dll的引用: 下载地址:http://files.cnblogs.com/files/zflsyn/ThoughtWorks.QRCode.zip 2.引用命名空间 1 using System.Text; 2 using System.Drawing; 3 using ThoughtWorks; 4 using ThoughtWorks.QRCode; 5 using ThoughtWorks.QRCode.Codec;