zl程序教程

您现在的位置是:首页 >  其它

当前栏目

QrCode的实现二维码功能

实现 功能 二维码 Qrcode
2023-09-14 09:01:03 时间

public class QRCodeEncoderHandler {

public void encoderQRCode(String content, String imgPath) { 

       try { 

           Qrcode qrcodeHandler = new Qrcode(); 

        // 设置二维码排错率,可选L(7%)、M(15%)、Q(25%)、H(30%),排错率越高可存储的信息越少,但对二维码清晰度的要求越小 

           qrcodeHandler.setQrcodeErrorCorrect(H); 

           qrcodeHandler.setQrcodeEncodeMode(B); 

           qrcodeHandler.setQrcodeVersion(5); 

           System.out.println(content); 

//            int imgSize = 67 + 12 * (size - 1);

           byte[] contentBytes = content.getBytes("gb2312"); 

           BufferedImage bufImg = new BufferedImage(115, 115, 

                   BufferedImage.TYPE_INT_RGB); 

           Graphics2D gs = bufImg.createGraphics(); 

           gs.setBackground(Color.WHITE); 

           gs.clearRect(0, 0, 115, 115); 

           // 设定图像颜色 BLACK 

           gs.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(); 

       } 

   } 

   /**

 

    * @param args the command line arguments

 

    */ 

 

   public static void main(String[] args) { 

    //取当前时间为图片名称 带毫秒的

    SimpleDateFormat sdf =   new SimpleDateFormat("yyyyMMddHHmmssSSS" );

Date d=new Date();

String str=sdf.format(d);

       String imgPath = "D:/QRCode/twocode/"+str+".png"; 

       String content= "这是测试";

       QRCodeEncoderHandler handler = new QRCodeEncoderHandler(); 

       handler.encoderQRCode(content, imgPath); 

       System.out.println("imgPath:"+imgPath);

       System.out.println("encoder QRcode success"); 

   } 


续前:QRCode二维码生成方案及其在带LOGO型二维码中的应用(1)  http://blog.csdn.net/johnsuna/article/details/8525038 首先我们来看看二维码的符号字符区域,然后再看看其编码流程。
提要:很多公司为商业宣传之需,常将企业LOGO加入二维码中,但如果LOGO遮挡区域足够地大,二维码就变得无法识别。
输入设备(用来获取外界信息) 摄像头, 麦克风, 键盘 输出设备 (将收集到的信息, 做解析, 来获取收到的内容) 会话session (用来连接输入和输出设备) 特殊的layer (展示输入设备所采集的信息)
zxing生成二维码和读取二维码 当然,首先要导入zxing的jar包。 生成二维码代码: package com.imooc.zxing; import java.io.File; import java.nio.file.