java 编写二维码

下载QRCode.jar

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

import javax.imageio.ImageIO;

import com.swetake.util.Qrcode;

 

/**

 * 二维码生成器

 * @blog http://sjsky.iteye.com

 * @author Michael

 */

public class QRCodeEncoderHandler {

 

    /**

     * 生成二维码(QRCode)图片

     * @param content

     * @param imgPath

     */

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

        }

 

    }
    /**

     * 生成二维码(QRCode)图片

     * @param content

     * @param imgPath

     */
   
    public void encoderQRCode(String content, String imgPath,String ccpath) {
     
     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 ]. ");
       
      }
      
      BufferedImage image = ImageIO.read(new File(ccpath));
      gs.drawImage(image,55,55,null);
      
      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) {

        String imgPath = "D:/aa/QRCode.png";

 

        String content = "Hello 大大、小小,welcome to QRCode!"

                + "\nMyblog [ www.xxx.com ]"

                + "\nEMail [ [email protected] ]"
                + "\nTwitter [ @suncto ]";

 

        QRCodeEncoderHandler handler = new QRCodeEncoderHandler();

        handler.encoderQRCode(content, imgPath);

 

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

    }

}

你可能感兴趣的:(java应用,java)