java代码生成二维码图片

需要使用到的jar包:QRCode.jar

这里提供一个下载:点此下载QRCode.jar

因为代码比较简单。就不多啰嗦,直接帖代码了,拷过去就能直接用.

TwoDimensionCode.java:
  1 import java.awt.Color;
  2 import java.awt.Graphics2D;
  3 import java.awt.image.BufferedImage;
  4 import java.io.File;
  5 import java.io.IOException;
  6 import java.io.InputStream;
  7 import java.io.OutputStream;
  8
  9 import javax.imageio.ImageIO;
 10
 11 import jp.sourceforge.qrcode.QRCodeDecoder;
 12 import jp.sourceforge.qrcode.exception.DecodingFailedException;
 13
 14 import com.swetake.util.Qrcode;
 15
 16
 17 public class TwoDimensionCode {
 18
 19       /**
 20       * 生成二维码(QRCode)图片
 21       * @param content 存储内容
 22       * @param imgPath 图片路径
 23       */
 24       public void encoderQRCode(String content, String imgPath)  {
 25             this.encoderQRCode(content, imgPath, "png", 7);
 26      }
 27
 28       /**
 29       * 生成二维码(QRCode)图片
 30       * @param content 存储内容
 31       * @param output 输出流
 32       */
 33       public void encoderQRCode(String content, OutputStream output) {
 34             this.encoderQRCode(content, output, "png", 7);
 35      }
 36
 37       /**
 38       * 生成二维码(QRCode)图片
 39       * @param content 存储内容
 40       * @param imgPath 图片路径
 41       * @param imgType 图片类型
 42       */
 43       public void encoderQRCode(String content, String imgPath,  String imgType) {
 44             this.encoderQRCode(content, imgPath, imgType, 7);
 45      }
 46
 47       /**
 48       * 生成二维码(QRCode)图片
 49       * @param content 存储内容
 50       * @param output 输出流
 51       * @param imgType 图片类型
 52       */
 53       public void encoderQRCode(String content, OutputStream output, String imgType) {
 54             this.encoderQRCode(content, output, imgType, 7);
 55      }
 56
 57       /**
 58       * 生成二维码(QRCode)图片
 59       * @param content 存储内容
 60       * @param imgPath 图片路径
 61       * @param imgType 图片类型
 62       * @param size 二维码尺寸
 63       */
 64       public void encoderQRCode(String content, String imgPath,  String imgType, int size) {
 65             try {
 66                 BufferedImage bufImg =this.qRCodeCommon(content, imgType, size);
 67
 68                 File imgFile = new File(imgPath);
 69                  // 生成二维码QRCode图片
 70                 ImageIO. write(bufImg, imgType , imgFile);
 71            } catch (Exception e) {
 72                 e.printStackTrace();
 73            }
 74      }
 75
 76       /**
 77       * 生成二维码(QRCode)图片
 78       * @param content 存储内容
 79       * @param output 输出流
 80       * @param imgType 图片类型
 81       * @param size 二维码尺寸
 82       */
 83       public void encoderQRCode(String content, OutputStream output, String imgType, int size) {
 84             try {
 85                 BufferedImage bufImg =this.qRCodeCommon(content, imgType, size);
 86                  // 生成二维码QRCode图片
 87                 ImageIO. write(bufImg, imgType, output);
 88            } catch (Exception e) {
 89                 e.printStackTrace();
 90            }
 91      }
 92
 93       /**
 94       * 生成二维码(QRCode)图片的公共方法
 95       * @param content 存储内容
 96       * @param imgType 图片类型
 97       * @param size 二维码尺寸
 98       * @return
 99       */
100       private BufferedImage qRCodeCommon(String content, String  imgType, int size) {
101            BufferedImage bufImg = null;
102             try {
103                 Qrcode qrcodeHandler = new Qrcode();
104                  // 设置二维码排错率,可选L(7%)、M(15%)、Q(25%)、H(30%),排错率越高可存储的信息越少,但对二维码清晰度的要求越小
105                 qrcodeHandler.setQrcodeErrorCorrect( ‘M‘);
106                 qrcodeHandler.setQrcodeEncodeMode( ‘B‘);
107                  // 设置设置二维码尺寸,取值范围1-40,值越大尺寸越大,可存储的信息越大
108                 qrcodeHandler.setQrcodeVersion(size);
109                  // 获得内容的字节数组,设置编码格式
110                  byte[] contentBytes = content.getBytes( "utf-8");
111                  // 图片尺寸
112                  int imgSize = 67 + 12 * (size - 1);
113                 bufImg = new BufferedImage(imgSize, imgSize, BufferedImage.TYPE_INT_RGB );
114                 Graphics2D gs = bufImg.createGraphics();
115                  // 设置背景颜色
116                 gs.setBackground(Color. WHITE);
117                 gs.clearRect(0, 0, imgSize, imgSize);
118
119                  // 设定图像颜色> BLACK
120                 gs.setColor(Color. BLACK);
121                  // 设置偏移量,不设置可能导致解析出错
122                  int pixoff = 2;
123                  // 输出内容> 二维码
124                  if (contentBytes. length > 0 && contentBytes.length < 800) {
125                       boolean[][] codeOut = qrcodeHandler.calQrcode(contentBytes);
126                       for ( int i = 0; i < codeOut. length; i++) {
127                             for ( int j = 0; j < codeOut. length; j++) {
128                                  if (codeOut[j][i]) {
129                                      gs.fillRect(j * 3 + pixoff, i * 3 + pixoff, 3, 3);
130                                 }
131                            }
132                      }
133                 } else {
134                       throw new Exception( "QRCode content bytes  length = " + contentBytes. length + " not in [0, 800].");
135                 }
136                 gs.dispose();
137                 bufImg.flush();
138            } catch (Exception e) {
139                 e.printStackTrace();
140            }
141             return bufImg;
142      }
143
144       /**
145       * 解析二维码(QRCode)
146       * @param imgPath 图片路径
147       * @return
148       */
149       public String decoderQRCode(String imgPath) {
150             // QRCode 二维码图片的文件
151            File imageFile = new File(imgPath);
152            BufferedImage bufImg = null;
153            String content = null;
154             try {
155                 bufImg = ImageIO. read(imageFile);
156                 QRCodeDecoder decoder = new QRCodeDecoder();
157                 content = new String(decoder.decode( newTwoDimensionCodeImage(bufImg)), "utf-8" );
158            } catch (IOException e) {
159                 System. out.println( "Error: " + e.getMessage());
160                 e.printStackTrace();
161            } catch (DecodingFailedException dfe) {
162                 System. out.println( "Error: " + dfe.getMessage());
163                 dfe.printStackTrace();
164            }
165             return content;
166      }
167
168       /**
169       * 解析二维码(QRCode)
170       * @param input 输入流
171       * @return
172       */
173       public String decoderQRCode(InputStream input) {
174            BufferedImage bufImg = null;
175            String content = null;
176             try {
177                 bufImg = ImageIO. read(input);
178                 QRCodeDecoder decoder = new QRCodeDecoder();
179                 content = new String(decoder.decode( newTwoDimensionCodeImage(bufImg)), "utf-8" );
180            } catch (IOException e) {
181                 System. out.println( "Error: " + e.getMessage());
182                 e.printStackTrace();
183            } catch (DecodingFailedException dfe) {
184                 System. out.println( "Error: " + dfe.getMessage());
185                 dfe.printStackTrace();
186            }
187             return content;
188      }
189
190       public static void main(String[] args) {
191            String imgPath = "G:/ZTFCard.png";
192            String encoderContent = "我的名片" + "\n我的微博:[http://t.qq.com/fengqingyan]" + "\n电子邮件:[[email protected]]" +"\n手机:[15601973133]" ;
193            TwoDimensionCode handler = new TwoDimensionCode();
194            handler.encoderQRCode(encoderContent, imgPath, "png" );
195 //         try {
196 //              OutputStream output = new FileOutputStream(imgPath);
197 //              handler.encoderQRCode(content, output);
198 //         } catch (Exception e) {
199 //              e.printStackTrace();
200 //         }
201            System. out.println( "========encoder success" );
202
203
204            String decoderContent = handler.decoderQRCode(imgPath);
205            System. out.println( "解析结果如下:" );
206            System. out.println(decoderContent);
207            System. out.println( "========decoder success!!!" );
208      }
209 }

下面是一个测试的类:QRtest.java

public class QRtest {
    public static void main(String[] args){
        TwoDimensionCode td = new TwoDimensionCode();
        td.encoderQRCode("这是一个测试文件类","d://123.jpg","jpg",12);
    }
}

END!

时间: 2024-10-10 07:58:40

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

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

利用java代码生成二维码

第一步:准备依赖包:core-3.0.0.jar (下载地址,扫二维码,哈哈)和一张准备放在二维码中间的图片 第二步:打开Eclipse,新建一个web工程,起好工程名 在src中先键一个包,然后将下面两个java文件拷贝进src去 BufferedImageLuminanceSource.java package com.simplelife; import java.awt.Graphics2D; import java.awt.geom.AffineTransform; import ja

java代码生成二维码

一.使用3个jar包. zxing-core-1.7.jar,zxing-j2se-1.7.jar,qrgen-1.2.jar 下载地址:  http://download.csdn.net/detail/jiazhipeng12/8442665 public class Main { /** * 生成一个二维码 * @param args * @throws UnsupportedEncodingException */ public static void main(String[] arg

Java实现二维码技术探讨。

Java生成二维码方法有三种: 1: 使用SwetakeQRCode在Java项目中生成二维码 http://swetake.com/qr/ 下载地址 或着http://sourceforge.jp/projects/qrcode/downloads/28391/qrcode.zip 这个是日本人写的,生成的是我们常见的方形的二维码 能够用中文 如:5677777ghjjjjj 2: 使用BarCode4j生成条形码和二维码 BarCode4j网址:http://sourceforge.net/

JAVA中生成二维码图片的方法

JAVA中生成二维码的方法并不复杂,使用google的zxing包就可以实现.下面的方法包含了生成二维码.在中间附加logo.添加文字功能. 一.下载zxing的架包,并导入项目中,如下: 最主要的包都在com.google.zxing.core下.如果是maven项目,maven依赖如下: 1 <dependency> 2 <groupId>com.google.zxing</groupId> 3 <artifactId>core</artifact

java根据内容生成二维码图片

1 package util; 2 3 import java.awt.image.BufferedImage; 4 5 import java.io.File; 6 import java.io.IOException; 7 import java.io.OutputStream; 8 9 import javax.imageio.ImageIO; 10 11 import java.util.Hashtable; 12 13 import com.google.zxing.common.Bi

转:Java生成带有二维码图片的word文档

(一)功能描述:在智能终端的系统中,对所有学员的信息要生成带有二维码图片的报到证与准考证的word文档 (二)实现过程: 1.创建报到证与准考证的word模板,在模板中填充相应的变量. 2.该模板中存在图片,所以在制作模板中应先在相应的位置放一张图片,调整好大小,起到站位的作用 1.创建报到证与准考证的word模板,在模板中填充相应的变量. 2.在该模板中存在图片,所以在制作模板中应先在相应的位置放一张图片,调整好大小,起到 3.将创建好的模板另存为.xml格式的文件 3.此时的.xml格式的文

Java制作二维码代码,中间带logo图片,可设置logo大小

public static int createQRCode(String content, String imgPath,String logo) { try { Qrcode qrcodeHandler = new Qrcode(); qrcodeHandler.setQrcodeErrorCorrect('M'); qrcodeHandler.setQrcodeEncodeMode('B'); qrcodeHandler.setQrcodeVersion(7); // System.out

Java生成读取条形码和二维码图片

原文:http://www.open-open.com/code/view/1453520722495 package zxing; import com.google.zxing.BarcodeFormat; import com.google.zxing.Binarizer; import com.google.zxing.BinaryBitmap; import com.google.zxing.DecodeHintType; import com.google.zxing.EncodeH