java Qrcode方式生成二维码

来源:互联网 发布:北京青旅短租推荐 知乎 编辑:程序博客网 时间:2024/05/17 08:35
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;public class PubTool {/** * add  by  xbx 生成二维码 * @param content * @param imgPath */public void encoderQRCode(String content, String imgPath) {try {Qrcode qrcodeHandler = new Qrcode();// 设置二维码排错率,可选L(7%)、M(15%)、Q(25%)、H(30%),排错率越高可存储的信息越少,但对二维码清晰度的要求越小qrcodeHandler.setQrcodeErrorCorrect('M');//编码模式:数字:Numeric   英文字母:Alphanumeric  二进制:Binary  汉字:KanjiqrcodeHandler.setQrcodeEncodeMode('B');//版本: 1-40 共40个版本:  (1:21x21模块;  2:177x177模块)qrcodeHandler.setQrcodeVersion(5);System.out.println(content);//int imgSize = 67 + 12 * (size - 1);byte[] contentBytes = content.getBytes("GBK");BufferedImage bufImg = new BufferedImage(115, 115,BufferedImage.TYPE_INT_RGB);Graphics2D gs = bufImg.createGraphics();gs.setBackground(Color.WHITE);gs.clearRect(0, 0, 115, 115);// 设定图像颜色> 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 {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();}}public static void main(String[] args) {//取当前时间为图片名称 带毫秒的SimpleDateFormat sdf =  new SimpleDateFormat("yyyyMMddHHmmssSSS" );Date d=new Date();String str=sdf.format(d);String imgPath = "C:\\erweima\\"+str+".png";String content= "http://blog.csdn.net/xubenxismile/article/details/53290662";PubTool handler = new PubTool();handler.encoderQRCode(content, imgPath);System.out.println("imgPath:"+imgPath);System.out.println("encoder QRcode success");}}

0 0