1 import com.swetake.util.Qrcode; 2 3 import javax.imageio.ImageIO; 4 import java.awt.*; 5 import java.awt.image.BufferedImage; 6 import java.io.File; 7 8 public class QRCodeEncoderHandler { 9 10 public void encoderQRcode(String content,String imgPath){ 11 try { 12 Qrcode qrcodeHandler = new Qrcode(); 13 //设置二维码排错率,可选L(7%),M(15%), Q(25%), H(30%),排错率越高可存储的信息越少,但对二维码清晰度的要求越小 14 qrcodeHandler.setQrcodeErrorCorrect('M'); 15 //编码格式:Numeric数字 Binary二进制 Kanji汉字 Alphanumeric英文字母 16 qrcodeHandler.setQrcodeEncodeMode('B'); 17 qrcodeHandler.setQrcodeVersion(5); 18 byte[] contentBytes = content.getBytes("gb2312"); 19 BufferedImage bufImg = new BufferedImage(600,600,BufferedImage.TYPE_INT_RGB); 20 Graphics2D gs = bufImg.createGraphics(); 21 gs.setBackground(Color.WHITE);//设置背景色 22 gs.clearRect(0,0,600,600); 23 // 设定图像颜色>BLACK 24 gs.setColor(Color.BLACK); 25 // 设置偏移量不设置可能导致解析出错 26 int pixoff = 2; 27 // 输出内容>二维码 28 if(contentBytes.length>0&&contentBytes.length<800){ 29 boolean[][] codeOut = qrcodeHandler.calQrcode(contentBytes); 30 for(int i= 0; i<codeOut.length;i++){ 31 for(int j=0;j<codeOut.length;j++){ 32 if(codeOut[j][i]){ 33 gs.fillRect(j*16+pixoff,i*16+pixoff,16,16); 34 } 35 } 36 } 37 } 38 gs.dispose(); 39 bufImg.flush(); 40 File imgFile = new File(imgPath); 41 //生成二维码QRCode图片 42 ImageIO.write(bufImg,"png", imgFile); 43 }catch (Exception e){ 44 e.printStackTrace(); 45 } 46 } 47 public static void main(String[] args){ 48 //图片路径 49 String imgPath = "D:\\"+"123"+"png"; 50 //二维码识别后跳转页面 51 String content = "https://www.baidu.com/"; 52 QRCodeEncoderHandler handler = new QRCodeEncoderHandler(); 53 handler.encoderQRcode(content,imgPath); 54 } 55 } 56
注意:先导入jar(core-3.1.0.jar,Qrcode_swetake.jar)。
心美一切皆美