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;
                }else{

pixels[y * width + x] = 0xffffffff;
          }
            }
        }

        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;
    }
    

導入zxing包 

compile 'com.google.zxing:core:3.3.3@jar'



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM