java生成二维码

来源:互联网 发布:lte ping时延优化 编辑:程序博客网 时间:2024/05/17 05:58
package net.test;


import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.sql.Blob;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;


import javax.imageio.ImageIO;


import com.swetake.util.Qrcode;






public class Test {


public static void main(String[] args) throws Exception {

  String imgPath = "D:/qrCode.png";
  File file=new File(imgPath);
  System.out.println(file.getName());
      String content = "http://www.baidu.com";
      Test test=new Test();
      test.encoderQRCode(content, imgPath);    

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


public static InputStream getStringStream(String sInputString) {
if (sInputString != null && !sInputString.trim().equals("")) {
try {
ByteArrayInputStream tInputStringStream = new ByteArrayInputStream(
sInputString.getBytes());
return tInputStringStream;
} catch (Exception ex) {
ex.printStackTrace();
}
}
return null;
}


public static String getStreamString(InputStream tInputStream) {
if (tInputStream != null) {
try {
BufferedReader tBufferedReader = new BufferedReader(
new InputStreamReader(tInputStream));
StringBuffer tStringBuffer = new StringBuffer();
String sTempOneLine = new String("");
while ((sTempOneLine = tBufferedReader.readLine()) != null) {
tStringBuffer.append(sTempOneLine);
}
return tStringBuffer.toString();
} catch (Exception ex) {
ex.printStackTrace();
}
}
return null;
}

/**** 
* 生成二维码(QRCode)图片      

* */   
   public void encoderQRCode(String content, String imgPath) {    

     try {    





       Qrcode qrcodeHandler = new Qrcode();    


       qrcodeHandler.setQrcodeErrorCorrect('M');    


          qrcodeHandler.setQrcodeEncodeMode('B');    


       qrcodeHandler.setQrcodeVersion(7);    






         System.out.println(content);    


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

           BufferedImage bufImg = new BufferedImage(140, 140,    
 
                  BufferedImage.TYPE_INT_RGB);    
 
   


        Graphics2D gs = bufImg.createGraphics();    


           gs.setBackground(Color.WHITE);    


          gs.clearRect(0, 0, 140, 140);    
 
        // 设定图像颜色> BLACK    


          gs.setColor(Color.BLACK);    



         // 设置偏移量 不设置可能导致解析出错    


          int pixoff = 2;    
 
          // 输出内容> 二维码    


           if (contentBytes.length > 0 && contentBytes.length < 120) {    
  
              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();    


    } 
      }   


}
0 0