二维码支付java代码 二维码支付java代码是什么

Java如何用代码生成二维码

引用spire.barcode.jar包

创新互联主要从事成都做网站、网站制作、网页设计、企业做网站、公司建网站等业务。立足成都服务驿城,十多年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:028-86922220

//创建BarcodeSettings对象

BarcodeSettings settings = new BarcodeSettings();

//设置条码类型为

QR二维码settings.setType(BarCodeType.QR_Code);       

//设置二维码数据

settings.setData("Hello 123456789");

//设置二维码显示数据

settings.setData2D("Hello 123456789");     

//设置数据类型

settings.setQRCodeDataMode(QRCodeDataMode.Alpha_Number);

//设置二维码模型宽度

settings.setX(1.0f);

//设置二维码纠错级别settings.setQRCodeECL(QRCodeECL.H);

//创建BarCodeGenerator实例

BarCodeGenerator barCodeGenerator = new BarCodeGenerator(settings);

//根据settings生成图像数据,保存至BufferedImage

BufferedImage bufferedImage = barCodeGenerator.generateImage();

//将图片数据保存为PNG格式

ImageIO.write(bufferedImage, "png", new File("QRCode.png"));

求一个用Java编的二维码生成识别的demo,希望内容完整点,万分感谢

在java工程里面导入QRCode.JAR包

import java.awt.Color;

import java.awt.Graphics2D;

import java.awt.image.BufferedImage;

import java.io.File;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import javax.imageio.ImageIO;

import jp.sourceforge.qrcode.QRCodeDecoder;

import jp.sourceforge.qrcode.exception.DecodingFailedException;

import com.swetake.util.Qrcode;

public class TwoDimensionCode {

/**

 * 生成二维码(QRCode)图片

 * 

 * @param content

 *            存储内容

 * @param imgPath

 *            图片路径

 */

public void encoderQRCode(String content, String imgPath) {

this.encoderQRCode(content, imgPath, "png", 7);

}

/**

 * 生成二维码(QRCode)图片

 * 

 * @param content

 *            存储内容

 * @param output

 *            输出流

 */

public void encoderQRCode(String content, OutputStream output) {

this.encoderQRCode(content, output, "png", 7);

}

/**

 * 生成二维码(QRCode)图片

 * 

 * @param content

 *            存储内容

 * @param imgPath

 *            图片路径

 * @param imgType

 *            图片类型

 */

public void encoderQRCode(String content, String imgPath, String imgType) {

this.encoderQRCode(content, imgPath, imgType, 7);

}

/**

 * 生成二维码(QRCode)图片

 * 

 * @param content

 *            存储内容

 * @param output

 *            输出流

 * @param imgType

 *            图片类型

 */

public void encoderQRCode(String content, OutputStream output,

String imgType) {

this.encoderQRCode(content, output, imgType, 7);

}

/**

 * 生成二维码(QRCode)图片

 * 

 * @param content

 *            存储内容

 * @param imgPath

 *            图片路径

 * @param imgType

 *            图片类型

 * @param size

 *            二维码尺寸

 */

public void encoderQRCode(String content, String imgPath, String imgType,

int size) {

try {

BufferedImage bufImg = this.qRCodeCommon(content, imgType, size);

File imgFile = new File(imgPath);

// 生成二维码QRCode图片

ImageIO.write(bufImg, imgType, imgFile);

} catch (Exception e) {

e.printStackTrace();

}

}

/**

 * 生成二维码(QRCode)图片

 * 

 * @param content

 *            存储内容

 * @param output

 *            输出流

 * @param imgType

 *            图片类型

 * @param size

 *            二维码尺寸

 */

public void encoderQRCode(String content, OutputStream output,

String imgType, int size) {

try {

BufferedImage bufImg = this.qRCodeCommon(content, imgType, size);

// 生成二维码QRCode图片

ImageIO.write(bufImg, imgType, output);

} catch (Exception e) {

e.printStackTrace();

}

}

/**

 * 生成二维码(QRCode)图片的公共方法

 * 

 * @param content

 *            存储内容

 * @param imgType

 *            图片类型

 * @param size

 *            二维码尺寸

 * @return

 */

private BufferedImage qRCodeCommon(String content, String imgType, int size) {

BufferedImage bufImg = null;

try {

Qrcode qrcodeHandler = new Qrcode();

// 设置二维码排错率,可选L(7%)、M(15%)、Q(25%)、H(30%),排错率越高可存储的信息越少,但对二维码清晰度的要求越小

qrcodeHandler.setQrcodeErrorCorrect('M');

qrcodeHandler.setQrcodeEncodeMode('B');

// 设置设置二维码尺寸,取值范围1-40,值越大尺寸越大,可存储的信息越大

qrcodeHandler.setQrcodeVersion(size);

// 获得内容的字节数组,设置编码格式

byte[] contentBytes = content.getBytes("utf-8");

// 图片尺寸

int imgSize = 67 + 12 * (size - 1);

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  800) {

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 * 3 + pixoff, i * 3 + pixoff, 3, 3);

}

}

}

} else {

throw new Exception("QRCode content bytes length = "

+ contentBytes.length + " not in [0, 800].");

}

gs.dispose();

bufImg.flush();

} catch (Exception e) {

e.printStackTrace();

}

return bufImg;

}

/** 

* 解析二维码(QRCode) 

* @param imgPath 图片路径 

* @return 

*/  

public String decoderQRCode(String imgPath) {  

// QRCode 二维码图片的文件  

File imageFile = new File(imgPath);  

BufferedImage bufImg = null;  

String content = null;  

try {  

bufImg = ImageIO.read(imageFile);  

QRCodeDecoder decoder = new QRCodeDecoder();  

content = new String(decoder.decode(new TwoDimensionCodeImage(bufImg)), "utf-8");   

} catch (IOException e) {  

System.out.println("Error: " + e.getMessage());  

e.printStackTrace();  

} catch (DecodingFailedException dfe) {  

System.out.println("Error: " + dfe.getMessage());  

dfe.printStackTrace();  

}  

return content;  

}  

/** 

* 解析二维码(QRCode) 

* @param input 输入流 

* @return 

*/  

public String decoderQRCode(InputStream input) {  

BufferedImage bufImg = null;  

String content = null;  

try {  

bufImg = ImageIO.read(input);  

QRCodeDecoder decoder = new QRCodeDecoder();  

content = new String(decoder.decode(new TwoDimensionCodeImage(bufImg)), "utf-8");   

} catch (IOException e) {  

System.out.println("Error: " + e.getMessage());  

e.printStackTrace();  

} catch (DecodingFailedException dfe) {  

System.out.println("Error: " + dfe.getMessage());  

dfe.printStackTrace();  

}  

return content;  

}  

public static void main(String[] args) {  

String imgPath = "G:/TDDOWNLOAD/Michael_QRCode.png";  

String encoderContent = "Hello 大大、小小,welcome to QRCode!" + "\nMyblog [  ]" + "\nEMail [ sjsky007@gmail.com ]";  

TwoDimensionCode handler = new TwoDimensionCode();  

handler.encoderQRCode(encoderContent, imgPath, "png");  

//      try {  

//          OutputStream output = new FileOutputStream(imgPath);  

//          handler.encoderQRCode(content, output);  

//      } catch (Exception e) {  

//          e.printStackTrace();  

//      }  

System.out.println("========encoder success");  

String decoderContent = handler.decoderQRCode(imgPath);  

System.out.println("解析结果如下:");  

System.out.println(decoderContent);  

System.out.println("========decoder success!!!");  

}  

}

第二个代码:

import java.awt.image.BufferedImage;  

import jp.sourceforge.qrcode.data.QRCodeImage;  

public class TwoDimensionCodeImage implements QRCodeImage {  

BufferedImage bufImg;  

public TwoDimensionCodeImage(BufferedImage bufImg) {  

this.bufImg = bufImg;  

}  

@Override  

public int getHeight() {  

return bufImg.getHeight();  

}  

@Override  

public int getPixel(int x, int y) {  

return bufImg.getRGB(x, y);  

}  

@Override  

public int getWidth() {  

return bufImg.getWidth();  

}  

}

怎么使用java生成DataMatrix格式的二维码?

参考:

import com.spire.barcode.BarCodeGenerator;

import com.spire.barcode.BarCodeType;

import com.spire.barcode.BarcodeSettings;

import javax.imageio.ImageIO;

import java.awt.*;

import java.awt.image.BufferedImage;

import java.io.File;

public class CreateDataMatrix {

public static void main(String[] args) throws Exception {

  //生成BarcodeSettings实例

  BarcodeSettings settings = new BarcodeSettings();

  //设置条形码类型为DataMatrix

  settings.setType(BarCodeType.Data_Matrix);

  //设置条形码模型宽度

  settings.setX(1.5f);

  //设置数据和显示文本

  settings.setData("ABC 123456789ABC 123456789ABC 123456789");

  settings.setData2D("ABC 123456789ABC 123456789ABC 123456789");

  //创建BarCodeGenerator实例

  BarCodeGenerator barCodeGenerator = new BarCodeGenerator(settings);

  //根据settings生成图像数据,保存至BufferedImage实例

  BufferedImage bufferedImage = barCodeGenerator.generateImage();

  //保存为PNG图片

  ImageIO.write(bufferedImage, "png", new File("DataMatrix.png"));

  System.out.println("Complete!");

}

}

用到了spire.barcode for java库

如何使用java开发二维码代码

1: 使用SwetakeQRCode在Java项目中生成二维码

下载地址

或着

这个是日本人写的,生成的是我们常见的方形的二维码

可以用中文

如:5677777ghjjjjj

2: 使用BarCode4j生成条形码和二维码

BarCode4j网址:

barcode4j是使用datamatrix的二维码生成算法,为支持qr的算法

datamatrix是欧美的标准,qr为日本的标准,

barcode4j一般生成出来是长方形的

如:88777alec000yan

这个博客这方面说的挺清楚的:

3:zxing

zxing 这个是google的

下载地址

Java代码:

import java.io.File;

import java.util.Hashtable;

import com.google.zxing.BarcodeFormat;

import com.google.zxing.EncodeHintType;

import com.google.zxing.MultiFormatWriter;

import com.google.zxing.client.j2se.MatrixToImageWriter;

import com.google.zxing.common.BitMatrix;

import com.google.zxing.qrcode.QRCodeWriter;

public class QRCodeEvents {

public static void main(String []args)throws Exception{

String text = "你好";

int width = 100;

int height = 100;

String format = "png";

Hashtable hints= new Hashtable();

hints.put(EncodeHintType.CHARACTER_SET, "utf-8");

BitMatrix bitMatrix = new MultiFormatWriter().encode(text, BarcodeFormat.QR_CODE, width, height,hints);

File outputFile = new File("new.png");

MatrixToImageWriter.writeToFile(bitMatrix, format, outputFile);

}

}

4:google chart api就有实现二维码的方法

利用这个api,使用google appengine进行实现。

5:JS生成二维码

使用jQuery-qrcode生成二维码

先简单说一下jquery-qrcode,这个开源的三方库(可以从 获取),

qrcode.js 是实现二维码数据计算的核心类,

jquery.qrcode.js 是把它用jquery方式封装起来的,用它来实现图形渲染,其实就是画图(支持canvas和table两种方式)

支持的功能主要有:

Js代码:

text : "" //设置二维码内容

Js代码:

render : "canvas",//设置渲染方式

width : 256, //设置宽度

height : 256, //设置高度

typeNumber : -1, //计算模式

correctLevel : QRErrorCorrectLevel.H,//纠错等级

background : "#ffffff",//背景颜色

foreground : "#000000" //前景颜色

使用方式非常简单

Js代码:

jQuery('#output').qrcode({width:200,height:200,correctLevel:0,text:content});

经过简单实践,

使用canvas方式渲染性能还是非常不错的,但是如果用table方式,性能不太理想,特别是IE9以下的浏览器,所以需要自行优化一下渲染table的方式,这里就不细述了。

其实上面的js有一个小小的缺点,就是默认不支持中文。

这跟js的机制有关系,jquery-qrcode这个库是采用 charCodeAt() 这个方式进行编码转换的,

而这个方法默认会获取它的 Unicode 编码,一般的解码器都是采用UTF-8, ISO-8859-1等方式,

英文是没有问题,如果是中文,一般情况下Unicode是UTF-16实现,长度2位,而UTF-8编码是3位,这样二维码的编解码就不匹配了。

解决方式当然是,在二维码编码前把字符串转换成UTF-8,具体代码如下:

function utf16to8(str) {

var out, i, len, c;

out = "";

len = str.length;

for(i = 0; i len; i++) {

c = str.charCodeAt(i);

if ((c = 0x0001) (c = 0x007F)) {

out += str.charAt(i);

} else if (c 0x07FF) {

out += String.fromCharCode(0xE0 | ((c 12) 0x0F));

out += String.fromCharCode(0x80 | ((c 6) 0x3F));

out += String.fromCharCode(0x80 | ((c 0) 0x3F));

} else {

out += String.fromCharCode(0xC0 | ((c 6) 0x1F));

out += String.fromCharCode(0x80 | ((c 0) 0x3F));

}

}

return out;

}


网页名称:二维码支付java代码 二维码支付java代码是什么
网站URL:http://scyanting.com/article/dddhdio.html