zxing是google的一個開源二維碼項目,目前基本上和二維碼打交道的東西,都會用到它. 最近項目中用到了android手機須要根據提供的字符串生成二維碼圖片,以前用zxing作過二維碼解碼,編碼還沒作過,看了一些demo都是用到了zxing的j2se包的內容,這個在android或者其餘平臺上顯然沒法實現,因此咱們要利用zxing生成二維矩陣,而後根據android平臺的提供的api來生成圖片.java
- /**
- * 用字符串生成二維碼
- * @param str
- * @author zhouzhe@lenovo-cw.com
- * @return
- * @throws WriterException
- */
- public Bitmap Create2DCode(String str) throws WriterException {
- //生成二維矩陣,編碼時指定大小,不要生成了圖片之後再進行縮放,這樣會模糊致使識別失敗
- BitMatrix matrix = new MultiFormatWriter().encode(str,BarcodeFormat.QR_CODE, 300, 300);
- int width = matrix.getWidth();
- int height = matrix.getHeight();
- //二維矩陣轉爲一維像素數組,也就是一直橫着排了
- int[] pixels = new int[width * height];
- for (int y = 0; y < height; y++) {
- for (int x = 0; x < width; x++) {
- if(matrix.get(x, y)){
- pixels[y * width + x] = 0xff000000;
- }
-
- }
- }
-
- Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
- //經過像素數組生成bitmap,具體參考api
- bitmap.setPixels(pixels, 0, width, 0, 0, width, height);
- return bitmap;
- }
如下是運行結果,這裏最好讓背景是白色才能看出效果,由於遍歷矩陣之後,是把有標記的點描黑android

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