当前位置: 代码迷 >> Web前端 >> java 编纂二维码
  详细解决方案

java 编纂二维码

热度:506   发布时间:2014-01-05 18:22:55.0
java 编写二维码

下载QRCode.jar

import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;

import javax.imageio.ImageIO;

import com.swetake.util.Qrcode;

?

/**

?* 二维码生成器

?* @blog http://sjsky.iteye.com

?* @author Michael

?*/

public class QRCodeEncoderHandler {

?

??? /**

???? * 生成二维码(QRCode)图片

???? * @param content

???? * @param imgPath

???? */

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

??????? try {

?

??????????? Qrcode qrcodeHandler = new Qrcode();

??????????? qrcodeHandler.setQrcodeErrorCorrect('M');

??????????? qrcodeHandler.setQrcodeEncodeMode('B');

??????????? qrcodeHandler.setQrcodeVersion(7);

?

??????????? System.out.println(content);

??????????? byte[] contentBytes = content.getBytes("gb2312");

?

??????????? BufferedImage bufImg = new BufferedImage(140, 140,

??????????????????? BufferedImage.TYPE_INT_RGB);

?

??????????? Graphics2D gs = bufImg.createGraphics();

?

??????????? gs.setBackground(Color.WHITE);

??????????? gs.clearRect(0, 0, 140, 140);

?

??????????? // 设定图像颜色> BLACK

??????????? gs.setColor(Color.BLACK);

?

??????????? // 设置偏移量 不设置可能导致解析出错

??????????? int pixoff = 2;

??????????? // 输出内容> 二维码

??????????? if (contentBytes.length > 0 && contentBytes.length < 120) {

??????????????? 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 {

??????????????? System.err.println("QRCode content bytes length = "

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

??????????? }

?

??????????? gs.dispose();

??????????? bufImg.flush();

?

??????????? File imgFile = new File(imgPath);

?

??????????? // 生成二维码QRCode图片

??????????? ImageIO.write(bufImg, "png", imgFile);

?

??????? } catch (Exception e) {

??????????? e.printStackTrace();

??????? }

?

??? }
??? /**

???? * 生成二维码(QRCode)图片

???? * @param content

???? * @param imgPath

???? */
???
??? public void encoderQRCode(String content, String imgPath,String ccpath) {
??? ?
??? ?try {
??? ??
??? ??
??? ??
??? ??Qrcode qrcodeHandler = new Qrcode();
??? ??
??? ??qrcodeHandler.setQrcodeErrorCorrect('M');
??? ??
??? ??qrcodeHandler.setQrcodeEncodeMode('B');
??? ??
??? ??qrcodeHandler.setQrcodeVersion(7);
??? ??
??? ??
??? ??
??? ??System.out.println(content);
??? ??
??? ??byte[] contentBytes = content.getBytes("gb2312");
??? ??
??? ??
??? ??
??? ??BufferedImage bufImg = new BufferedImage(140, 140,
??? ????
??? ????BufferedImage.TYPE_INT_RGB);
??? ??
??? ??
??? ??
??? ??Graphics2D gs = bufImg.createGraphics();
??? ??
??? ??
??? ??
??? ??gs.setBackground(Color.WHITE);
??? ??
??? ??gs.clearRect(0, 0, 140, 140);
??? ??
??? ??
??? ??
??? ??// 设定图像颜色> BLACK
??? ??
??? ??gs.setColor(Color.BLACK);
??? ??
??? ??
??? ??
??? ??// 设置偏移量 不设置可能导致解析出错
??? ??
??? ??int pixoff = 2;
??? ??
??? ??// 输出内容> 二维码
??? ??
??? ??if (contentBytes.length > 0 && contentBytes.length < 120) {
??? ???
??? ???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 {
??? ???
??? ???System.err.println("QRCode content bytes length = "
??? ?????
??? ?????+ contentBytes.length + " not in [ 0,120 ]. ");
??? ???
??? ??}
??? ??
??? ??BufferedImage image = ImageIO.read(new File(ccpath));
??? ??gs.drawImage(image,55,55,null);
??? ??
??? ??gs.dispose();
??? ??
??? ??bufImg.flush();
??? ??
??? ??
??? ??
??? ??File imgFile = new File(imgPath);
??? ??
??? ??
??? ??
??? ??// 生成二维码QRCode图片
??? ??
??? ??ImageIO.write(bufImg, "png", imgFile);
??? ??
??? ??
??? ??
??? ?} catch (Exception e) {
??? ??
??? ??e.printStackTrace();
??? ??
??? ?}
??? ?
??? ?
??? ?
??? }

?

??? /**

???? * @param args the command line arguments

???? */

??? public static void main(String[] args) {

??????? String imgPath = "D:/aa/QRCode.png";

?

??????? String content = "Hello 大大、小小,welcome to QRCode!"

??????????????? + "\nMyblog [ www.xxx.com ]"

??????????????? + "\nEMail [ xxx@gmail.com ]"
??????????????? + "\nTwitter [ @suncto ]";

?

??????? QRCodeEncoderHandler handler = new QRCodeEncoderHandler();

??????? handler.encoderQRCode(content, imgPath);

?

??????? System.out.println("encoder QRcode success");

??? }

}

  相关解决方案