• 利用QRCode实现待logo的二维码的创建


     1 import java.awt.Color;
     2 import java.awt.Graphics2D;
     3 import java.awt.Image;
     4 import java.awt.image.BufferedImage;
     5 import java.io.File;
     6 
     7 import javax.imageio.ImageIO;
     8 
     9 import com.swetake.util.Qrcode;
    10 
    11 
    12 
    13 /**
    14  * @author GH
    15  *
    16  */
    17 public class BarcodeFactory {
    18     
    19     
    20     public static int createQRCode(String content, String imgPath,String ccbPath,int version) {    
    21         try {    
    22             Qrcode qrcodeHandler = new Qrcode();    
    23             //设置二维码排错率,可选L(7%)、M(15%)、Q(25%)、H(30%),排错率越高可存储的信息越少,但对二维码清晰度的要求越小    
    24             qrcodeHandler.setQrcodeErrorCorrect('M');    
    25             //N代表数字,A代表字符a-Z,B代表其他字符  
    26             qrcodeHandler.setQrcodeEncodeMode('B');   
    27             // 设置设置二维码版本,取值范围1-40,值越大尺寸越大,可存储的信息越大    
    28             qrcodeHandler.setQrcodeVersion(version);   
    29             // 图片尺寸    
    30             int imgSize =67 + 12 * (version - 1) ;  
    31     
    32             byte[] contentBytes = content.getBytes("gb2312");    
    33             BufferedImage image = new BufferedImage(imgSize, imgSize, BufferedImage.TYPE_INT_RGB);    
    34             Graphics2D gs = image.createGraphics();    
    35     
    36             gs.setBackground(Color.WHITE);    
    37             gs.clearRect(0, 0, imgSize, imgSize);    
    38     
    39             // 设定图像颜色 > BLACK    
    40             gs.setColor(Color.BLUE);    
    41     
    42             // 设置偏移量 不设置可能导致解析出错    
    43             int pixoff = 2;    
    44             // 输出内容 > 二维码    
    45             if (contentBytes.length > 0 && contentBytes.length < 130) {  
    46                 boolean[][] codeOut = qrcodeHandler.calQrcode(contentBytes);  
    47                 for (int i = 0; i < codeOut.length; i++) {  
    48                     for (int j = 0; j < codeOut.length; j++) {  
    49                         if (codeOut[j][i]) {  
    50                             gs.fillRect(j * 3 + pixoff, i * 3 + pixoff, 3, 3);  
    51                         }  
    52                     }  
    53                 }  
    54             } else {    
    55                 System.err.println("QRCode content bytes length = "    
    56                         + contentBytes.length + " not in [ 0,125]. ");    
    57                 return -1;  
    58             }    
    59             Image logo = ImageIO.read(new File(ccbPath));//实例化一个Image对象。  
    60             int widthLogo = logo.getWidth(null)>image.getWidth()*2/10?(image.getWidth()*2/10):logo.getWidth(null),   
    61                 heightLogo = logo.getHeight(null)>image.getHeight()*2/10?(image.getHeight()*2/10):logo.getWidth(null);  
    62              
    63              /** 
    64                * logo放在中心 
    65               */  
    66             int x = (image.getWidth() - widthLogo) / 2;  
    67             int y = (image.getHeight() - heightLogo) / 2;  
    68             gs.drawImage(logo, x, y, widthLogo, heightLogo, null);  
    69             gs.dispose();    
    70             image.flush();    
    71     
    72             // 生成二维码QRCode图片    
    73             File imgFile = new File(imgPath);    
    74             ImageIO.write(image, "png", imgFile);    
    75     
    76         } catch (Exception e)   
    77         {    
    78             e.printStackTrace();    
    79             return -100;  
    80         }    
    81           
    82         return 0;  
    83     }    
    84     public static void main(String[] args) {
    85              String imgPath = "D:/二维码生成/logo_QRCode.png";   
    86             String logoPath = "D:/logo/logo1.jpg";
    87             String encoderContent = "https://blog.csdn.net/gao36951/article/details/41149049";
    88             BarcodeFactory.createQRCode(encoderContent, imgPath, logoPath,8); 
    89     }
    90 }

  • 相关阅读:
    python判断字典中key是否存在
    获取redis中所有的key,清空整个 Redis 服务器的数据
    python redis模块详解
    Windows中redis的下载及安装、设置
    .htaccess
    python介绍
    vi和vim
    其他
    Linux系统相关命令
    Linux用户权限常见命令
  • 原文地址:https://www.cnblogs.com/GH0522/p/8649705.html
Copyright © 2020-2023  润新知