Android平臺利用ZXING生成二維碼圖片

zxing是google的一個開源二維碼項目,目前基本上和二維碼打交道的東西,都會用到它. 最近項目中用到了android手機須要根據提供的字符串生成二維碼圖片,以前用zxing作過二維碼解碼,編碼還沒作過,看了一些demo都是用到了zxing的j2se包的內容,這個在android或者其餘平臺上顯然沒法實現,因此咱們要利用zxing生成二維矩陣,而後根據android平臺的提供的api來生成圖片.java

[java]  view plain copy
  1. /** 
  2.      * 用字符串生成二維碼 
  3.      * @param str 
  4.      * @author zhouzhe@lenovo-cw.com 
  5.      * @return 
  6.      * @throws WriterException 
  7.      */  
  8.     public Bitmap Create2DCode(String str) throws WriterException {  
  9.         //生成二維矩陣,編碼時指定大小,不要生成了圖片之後再進行縮放,這樣會模糊致使識別失敗  
  10.         BitMatrix matrix = new MultiFormatWriter().encode(str,BarcodeFormat.QR_CODE, 300300);  
  11.         int width = matrix.getWidth();  
  12.         int height = matrix.getHeight();  
  13.         //二維矩陣轉爲一維像素數組,也就是一直橫着排了  
  14.         int[] pixels = new int[width * height];  
  15.         for (int y = 0; y < height; y++) {  
  16.             for (int x = 0; x < width; x++) {  
  17.                 if(matrix.get(x, y)){  
  18.                     pixels[y * width + x] = 0xff000000;  
  19.                 }  
  20.                   
  21.             }  
  22.         }  
  23.           
  24.         Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);  
  25.         //經過像素數組生成bitmap,具體參考api  
  26.         bitmap.setPixels(pixels, 0, width, 00, width, height);  
  27.         return bitmap;  
  28.     }  


如下是運行結果,這裏最好讓背景是白色才能看出效果,由於遍歷矩陣之後,是把有標記的點描黑android

這一切,須要zxing的core包,在zxing 1.6下測試經過.api

相關文章
相關標籤/搜索