1. 程式人生 > >基於java生成二維碼

基於java生成二維碼

alt 專家 美國 con 信息 ces 線性 exc rac

二維碼

  1. 二維碼的概念
    二維條碼/二維碼是用某種特定的集合圖形按照一定規律在平面(二維方向上)分布的黑白相間的圖形記錄數據符號信息的圖形
  2. 二維碼的起源
    二維碼技術誕生於20世紀40年代,但得到實際應用和迅速發展還是在近20年間。在通用商品條碼的應用系統中,最先采用的是一維碼,國外對二維碼技術的研究始於20世紀80年代,在二維碼符號表示技術研究方面,已研制出多種碼制,常見的有PDF417,QR Code,Code 49,Code 16K,Code One等。這些二維碼的密度都比傳統的一維碼有了較大的提高。專家介紹說,在二維碼標準化研究方面,國際自動識別制造商協會(AIM)、美國標準化協會(ANSI)已完成了PDF417,QR Code,Code 49,Code 16K,Code One等碼制的符號標準。在二維碼設備開發研制、生產方面,美國、日本等國的設備制造商生產的識讀設備、符號生成設備,已廣泛應用於各類二維碼應用系統。

3.二維碼的分類

1.線性堆疊式二維碼

2.矩陣式二維碼

3.郵政碼

4.二維碼的優缺點

優點:

1.高密度編碼,信息容量大

2.編碼範圍廣

3.容錯能力強

4.譯碼可靠性高

5.可引入加密措施

6.低成本,易制作,持久耐用

缺點:

1.二維碼技術成為手機病毒、釣魚網站傳播的渠道

2.信息泄露

5.二維碼特點
技術分享

6.三種實現制作二維碼

方法一:借助第三方jar:zxing

  1. 先到官網下載zxing-zxing壓縮文件,並解壓(網址:htto://github.com/zxing/)
  2. 獲得zxing.jar包。這裏可以先在myeclipes中新建一個java項目,將zxing-zxing-3.3.0\core\src\main\java\com的com文件夾

    與zxing-zxing-3.3.0\javase\src\main\java\com的com文件夾拷進src項目下,點擊Export導出jar包,命名為zxing.jar包

  3.生成二維碼

   新建一個java項目,並新建一個lib文件夾,將zxing.jar包copy進lib文件夾

   /**

  * 生成二維碼

   * @author 佳先森

   *

   */

  public class CreateQRCode {

   public static void main(String[] args) {

       int width=300;

       int height=300;

      String format="png";

       String content="www.baidu.com";

       //定義二維碼的參數

       HashMap hints=new HashMap();

      hints.put(EncodeHintType.CHARACTER_SET, "utf-8");

       //設置錯誤等級:L為最小,M為中,Q偏大,H最大,等級越大,所存儲內容越小

       hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M);

       //設置四周邊距

       hints.put(EncodeHintType.MARGIN, 2);

       //生成二維碼

       try {

          BitMatrix bitMatrix=new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, width, height,hints);

          Path file=new File("D:/zwing/img.png").toPath();

          MatrixToImageWriter.writeToPath(bitMatrix, format, file);

      } catch (Exception e) {

        // TODO Auto-generated catch block

        e.printStackTrace();

        }

      }

     }

    4.解析二維碼

    /**

    * 解析二維碼

    * @author 佳先森

     *

     */

    public class ReadQRCode {

     public static void main(String[] args) {

      MultiFormatReader formatReader=new MultiFormatReader();

      File file=new File("D:/zwing/img.png");

      BufferedImage image;

      try {

        image = ImageIO.read(file);

        //定義二維碼的參數

         HashMap hints=new HashMap();

        hints.put(EncodeHintType.CHARACTER_SET, "utf-8");

        BinaryBitmap binaryBitmap=new BinaryBitmap(new HybridBinarizer(new BufferedImageLuminanceSource(image)));

        Result result=formatReader.decode(binaryBitmap);

        System.out.println("解析結果如下:"+result.toString());

        System.out.println("二維碼格式類型:"+result.getBarcodeFormat());

        System.out.println("二維碼文本內容:"+result.getText());

      } catch (Exception e) {

      // TODO Auto-generated catch block

      e.printStackTrace();

    }

  

  }

  }

    5.在指定的文件夾下可以看到所生成的二維碼

方法二:借助qecode.jar包(這裏不演示)

方法三:JavaScript

  1. 先到官網下載jquery-qrcode壓縮文件(網址:https://github.com/jeromeetienne/jquery-qrcode)
  2. 新建一個java-web項目,並在WebRoot下新建一個js文件夾,將解壓後的文件夾的jquery.qrcode.min.js放進js文件,再另外下載好的jquery 放進js文件夾
  3. 制作一個顯示二維碼的jsp界面

    1.導入兩個js文件

    <script type="text/javascript" src="<%=request.getContextPath()%>/js/jquery-1.8.2.js"></script>

     <script type="text/javascript" src="<%=request.getContextPath()%>/js/jquery.qrcode.min.js"></script>

    2.編寫生成二維碼代碼

   <body>

    <h3>生成的二維碼如下</h3>

     <div id="qrcode"></div>

     <script type="text/javascript">

     jQuery(‘#qrcode‘).qrcode("http://www.baidu.com");

     </script>

   </body>

    4.通過瀏覽器輸入域名訪問查看二維碼

   7.擴展:

    1.註意訪問的內容寫法

    若寫成:www.baidu.com 只能視為文本

   若寫成: http://www.baidu.com 直接通過鏈接進入官網

2.實現二維碼實現二維碼掃描名片,得遵守VCard標準

基於java生成二維碼