怎样生成二维码

package cn.fulong.ccf.common;

import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;

import javax.imageio.ImageIO;

import cn.fulong.common.config.Platform;

import com.swetake.util.Qrcode;

public class QrcodeImage {
 
// 所需jar包:QRCode.jar
// 经过测试好用的一个生成二维码图片的方法:
 /** 
      * 生成二维码(QRCode)图片 
      * @param content 二维码图片的内容
      * @param imgPath 生成二维码图片完整的路径     
      * @param ccbpath  二维码图片中间的logo路径     
 */  
     public static int createQRCode(String content, String id) {    
      // 存入磁盘
   String separator = java.io.File.separator; // 分隔符
   // 目录位置:file/qrCode
   String path = Platform.getInstance().getRealPath() + separator
     + "file" + separator + "qrCode" + separator;
   String path1 = Platform.getInstance().getRealPath() + separator;
      String imgPath = path+id+".jpg";
      String ccbPath = path1+"minilogo.gif";//二维码图片中间的logo
      try {  
             Qrcode qrcodeHandler = new Qrcode();              
             qrcodeHandler.setQrcodeErrorCorrect('M');              
             qrcodeHandler.setQrcodeEncodeMode('B');              
             qrcodeHandler.setQrcodeVersion(12);     
             System.out.println(content);  
             byte[] contentBytes = content.getBytes("utf-8");              
             BufferedImage bufImg = new BufferedImage(69, 69, BufferedImage.TYPE_INT_RGB);  
             Graphics2D gs = bufImg.createGraphics();     
             gs.setBackground(Color.WHITE);              
             gs.clearRect(0, 0, 69, 69);     
             // 设定图像颜色 > BLACK             
             gs.setColor(Color.BLACK);     
             // 设置偏移量 不设置可能导致解析出错              
             int pixoff = 2;             
             // 输出内容 > 二维码  
             System.out.println(contentBytes.length);
             if (contentBytes.length > 0 && contentBytes.length < 120) {
              boolean[][] codeOut = qrcodeHandler.calQrcode(contentBytes);  
              System.out.println(codeOut.length);
              for (int i = 0; i < codeOut.length; i++) {                   
               for (int j = 0; j < codeOut.length; j++) {                 
                if (codeOut[j][i]) {  
                             gs.fillRect(j * 1 + pixoff, i * 1 + pixoff, 1, 1);       
                             }                     
                }                  
               }            
              } else {  
                 System.err.println("QRCode content bytes length = "       
                   + contentBytes.length + " not in [ 0,120 ]. ");       
                 return -1;            
                 }  

             Image img = ImageIO.read(new File(ccbPath));//实例化一个Image对象。          
             gs.drawImage(img, 27, 27, null);            
             gs.dispose();             
             bufImg.flush();     
             // 生成二维码QRCode图片  
             File imgFile = new File(imgPath);    
             ImageIO.write(bufImg, "png", imgFile);     
         } catch (Exception e){  
             e.printStackTrace();      
             return -100;    
         }
         return 0;
 }
    
     public static void main(String[] args) {
     
      createQRCode("E200005016G;安广宇;北京中科辅龙信息技术有限公司;anguangyu@fulong.com.cn;15101132587;2017-12-31","sjdifsjflsdjfljflijill");
      
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值