JAVA產生二維碼圖片代碼

來源:互聯網
上載者:User

標籤:

首先需要匯入 QRCode.jar 包

看這裡   http://pan.baidu.com/s/1o6qRFqM

import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import javax.imageio.ImageIO;
import com.swetake.util.Qrcode;

public class QrcodeUtil {
    public static void main(String[] args) {

        //產生二維碼
        String content = "http://user.qzone.qq.com/913240046";
        String imgPath = "F:\\test.png";
        String ccpath="F:\\center.png";
        createQRCode(content, imgPath,ccpath);

 

   String content2 = "http://user.qzone.qq.com/913240046";
        String imgPath2 = "F:\\test2.png";
        QrcodeImg(content2,imgPath2);   
        
 }

 /**
     * @param content 內容
     * @param imgPath 產生二維碼圖片的地址
     * @param ccbPath 二維碼中間圖片
     * @return
     */
    public static int createQRCode(String content, String imgPath, String ccbPath) {  
            try {  
            Qrcode qrcodeHandler = new Qrcode();  
                //設定二維碼排錯率,可選L(7%)、M(15%)、Q(25%)、H(30%),排錯率越高可儲存的資訊越少,但對二維碼清晰度的要求越小  
                qrcodeHandler.setQrcodeErrorCorrect(‘Q‘);  
                //N代表數字,A代表字元a-Z,B代表其他字元
                qrcodeHandler.setQrcodeEncodeMode(‘B‘);
                // 設定設定二維碼版本,取值範圍1-40,值越大尺寸越大,可儲存的資訊越大  
                int size = 12;
                qrcodeHandler.setQrcodeVersion(size);                 
                int imgSize = 67 + 12 * (size - 1);
                
                byte[] contentBytes = content.getBytes("utf-8");  
                BufferedImage bufImg = new BufferedImage(imgSize, imgSize, BufferedImage.TYPE_INT_RGB);  
                Graphics2D gs = bufImg.createGraphics();  
      
                gs.setBackground(Color.WHITE);  
                gs.clearRect(0, 0, imgSize, imgSize);  
      
                // 設定映像顏色 > 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,800]. ");  
                    return -1;
                }  
                Image img = ImageIO.read(new File(ccbPath));//執行個體化一個Image對象。
                gs.drawImage(img, 75, 75, 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;
        } 

 

/**
     * @param content 二維碼中包含的內容
     * @param imgPath 二維碼產生儲存路勁
     */
    public static void QrcodeImg(String content,String imgPath){
        try {
            
            Qrcode qrcode = new Qrcode();
            qrcode.setQrcodeErrorCorrect(‘M‘);
            qrcode.setQrcodeEncodeMode(‘B‘);
            qrcode.setQrcodeVersion(7);
            
            int width = 140;
            int height = 140;
            
            BufferedImage bufImg = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
            Graphics2D gs = bufImg.createGraphics();
            gs.setBackground(Color.WHITE);
            gs.clearRect(0, 0, width, height);
            gs.setColor(Color.BLACK);
            
        
            byte[] contentBytes = content.getBytes("utf-8");
            int pixoff = 2;
            
            //長度限制
            if(contentBytes.length>0 && contentBytes.length<120){
                boolean[][] codeOut = qrcode.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.out.println("出錯了");
            }
            gs.dispose();
            bufImg.flush();
            
            File imgFile = new File(imgPath);
            try {
                ImageIO.write(bufImg, "png", imgFile);
            } catch (IOException e) {
                e.printStackTrace();
            }
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
    }

}

//產生的二維碼圖片

       

 

JAVA產生二維碼圖片代碼

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.