項目ITP(一) 二維碼

來源:互聯網
上載者:User


前言

  系列文章:[傳送門]

  上幾周碌碌無為,不行啊不行啊。部落格園,不知道你幾時改版。老家了,我不會忘記你呢。呵呵,我也會在os,csdn更新的。每天一搏,不管有用沒用。

 

本文 

  本文先有項目起步,項目中的需求很明確。

    利用二維碼掃描,然後實現簽到功能。

  自然和app掛鈎。 沒事,一步一步來。

二維碼

   二維碼(QR(Quick Response)code),又稱二維條碼,它是用特定的幾何圖形按一定規律在平面(二維方向)上分布的黑白相間的圖形,是所有資訊資料的一把鑰匙。

  

利用工具-zxing

  ZXing是一個開放源碼的,用Java實現的多種格式的1D/2D條碼影像處理庫,它包含了聯絡到其他語言的連接埠。Zxing可以實現使用手機的內建的網路攝影機完成條碼的掃描及解碼。該項目可實現的條碼編碼和解碼

  大家可以去瞭解

  https://github.com/zxing/zxing/wiki/Getting-Started-Developing

二維碼(QRCode)的產生
  /**     * 產生二維碼圖片     * @param content        內容     * @param width          寬度     * @param height         高度     * @param imgPath        儲存圖片路徑     */
package sedion.jeffli.wmuitp.util.zxing;import java.io.File;import java.util.Hashtable;import com.google.zxing.BarcodeFormat;import com.google.zxing.EncodeHintType;import com.google.zxing.MultiFormatWriter;import com.google.zxing.client.j2se.MatrixToImageWriter;import com.google.zxing.common.BitMatrix;import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;/** * @author Jeff Lee */public class ZxingEncoderHelper {    /**     * 產生二維碼圖片     * @param content        內容     * @param width          寬度     * @param height         高度     * @param imgPath        儲存圖片路徑     */    public void encode(String content, int width, int height, String imgPath)     {                Hashtable<EncodeHintType, Object> hts = new Hashtable<EncodeHintType, Object>();        hts.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.L);                // 錯誤修正等級        hts.put(EncodeHintType.CHARACTER_SET, "utf-8");                                  // 指定編碼格式為UTF-8                try        {                        BitMatrix bitMatrix = new MultiFormatWriter().encode(content,                //編碼內容,編碼類別型(這裡指定為二維碼),                    BarcodeFormat.QR_CODE, width, height, hts);                          //圖片寬度,圖片高度,設定參數             MatrixToImageWriter                    .writeToFile(bitMatrix, "png", new File(imgPath));                    //產生的二維碼圖片        }        catch (Exception e)         {            e.printStackTrace();        }    }    public static void main(String[] args)     {        String imgPath = "d:/33.png";        String contents = "你好!我的部落格:http://www.cnblogs.com/Alandre/";        int width = 300, height = 300;        ZxingEncoderHelper handler = new ZxingEncoderHelper();        handler.encode(contents, width, height, imgPath);     }}

 #BitMatrix  設定參數順序分別為:編碼內容,編碼類別型,產生圖片寬度,產生圖片高度,設定參數  

 #MatrixToImageWriter 產生所需要的檔案

 

 你會找到這個圖片

  

 

二維碼(QRCode)的解碼

  

  /**     * 解碼     * @param imgPath        二維碼圖片路徑     * @return     */
package sedion.jeffli.wmuitp.util.zxing;import java.awt.image.BufferedImage;import java.io.File;import java.util.Hashtable;import javax.imageio.ImageIO;import com.google.zxing.BinaryBitmap;import com.google.zxing.DecodeHintType;import com.google.zxing.LuminanceSource;import com.google.zxing.MultiFormatReader;import com.google.zxing.Result;import com.google.zxing.client.j2se.BufferedImageLuminanceSource;import com.google.zxing.common.HybridBinarizer;/** * @author Jeff Lee */public class ZxingDecoderHandler {    /**     * 解碼     * @param imgPath        二維碼圖片路徑     * @return     */    public String decode(String imgPath)     {                BufferedImage image = null;        Result result = null;                try         {            image = ImageIO.read(new File(imgPath));            if (image == null)             {                System.out.println("檔案不存在!");                                //應該拋個異常的            }                        LuminanceSource source = new BufferedImageLuminanceSource(image);            BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));            Hashtable<DecodeHintType, Object> hints = new Hashtable<DecodeHintType, Object>();            hints.put(DecodeHintType.CHARACTER_SET, "utf-8");            result = new MultiFormatReader().decode(bitmap, hints);            return result.getText();        }        catch (Exception e)         {            e.printStackTrace();        }                return null;    }    public static void main(String[] args)     {        String imgPath = "d:/33.png";                ZxingDecoderHandler handler = new ZxingDecoderHandler();        String content = handler.decode(imgPath);                System.out.println("內容如下:");        System.out.println(content);      }}

 

#和產生的相反

   

總結

  二維碼產生

  二維碼解碼

 

感謝及資源共用

    

    路上走來一步一個腳印,希望大家和我一起。

    感謝讀者!很喜歡你們給我的支援。如果支援,點個贊。

    知識來源: https://github.com/zxing/zxing/wiki/Getting-Started-Developing

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.