Java代码生成二维码图片

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

这里提供一个下载:点此下载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);// 设定图像颜色> BLACKgs.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( newTwoDimensionCodeImage(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( newTwoDimensionCodeImage(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:/ZTFCard.png";String encoderContent = "我的名片" + "\n我的微博:[]" + "\n电子邮件:[zhitianfeng@hotmail.com]" +"\n手机:[15601973133]" ;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!!!" );}}微风吹过,海面上金光闪闪,泛起一道道美丽的浪花,

Java代码生成二维码图片

相关文章:

你感兴趣的文章:

标签云: