1. 程式人生 > >zxing生成二維碼和條碼

zxing生成二維碼和條碼

    /***
     * 生成二維碼方法
     * @param str 生成內容
     * @param widthHeight 寬度和高度
     * @return
     * @throws WriterException
     */
    public static Bitmap Create2DCode(String str,BarcodeFormat barcodeFormat,int widthHeight) throws WriterException {
        Hashtable<EncodeHintType, String> hints = new
Hashtable<>(); hints.put(EncodeHintType.CHARACTER_SET, "utf-8"); //生成二維矩陣,編碼時指定大小,不要生成了圖片以後再進行縮放,這樣會模糊導致識別失敗 BitMatrix matrix = new MultiFormatWriter().encode(str, barcodeFormat, widthHeight, widthHeight); 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; } public static Bitmap creatEAN13(String str,int paramsWidth,int paramsHeight) throws WriterException{ Hashtable<EncodeHintType, String> hints = new Hashtable<>(); hints.put(EncodeHintType.CHARACTER_SET, "utf-8"); //生成二維矩陣,編碼時指定大小,不要生成了圖片以後再進行縮放,這樣會模糊導致識別失敗 BitMatrix matrix = new MultiFormatWriter().encode(str, BarcodeFormat.EAN_13 , paramsWidth, paramsHeight); 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; } public static Bitmap creatUPCA(String str,int paramsWidth,int paramsHeight) throws WriterException{ Hashtable<EncodeHintType, String> hints = new Hashtable<>(); hints.put(EncodeHintType.CHARACTER_SET, "utf-8"); //生成二維矩陣,編碼時指定大小,不要生成了圖片以後再進行縮放,這樣會模糊導致識別失敗 BitMatrix matrix = new MultiFormatWriter().encode(str, BarcodeFormat.UPC_A, paramsWidth, paramsHeight); 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; }