首页 > 代码库 > java代码生成二维码图片
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 // 设定图像颜色> BLACK120 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 * @return148 */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 * @return172 */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电子邮件:[zhitianfeng@hotmail.com]" +"\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!
java代码生成二维码图片
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。