Search in sources :

Example 6 with QRCodeWriter

use of com.google.zxing.qrcode.QRCodeWriter in project RxTools by vondear.

the class RxQRCode method creatQRCode.

// ----------------------------------------------------------------------------------------------以下为生成二维码算法
public static Bitmap creatQRCode(CharSequence content, int QR_WIDTH, int QR_HEIGHT, int backgroundColor, int codeColor) {
    Bitmap bitmap = null;
    try {
        // 判断URL合法性
        if (content == null || "".equals(content) || content.length() < 1) {
            return null;
        }
        Hashtable<EncodeHintType, String> hints = new Hashtable<EncodeHintType, String>();
        hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
        // 图像数据转换,使用了矩阵转换
        BitMatrix bitMatrix = new QRCodeWriter().encode(content + "", BarcodeFormat.QR_CODE, QR_WIDTH, QR_HEIGHT, hints);
        int[] pixels = new int[QR_WIDTH * QR_HEIGHT];
        // 两个for循环是图片横列扫描的结果
        for (int y = 0; y < QR_HEIGHT; y++) {
            for (int x = 0; x < QR_WIDTH; x++) {
                if (bitMatrix.get(x, y)) {
                    pixels[y * QR_WIDTH + x] = codeColor;
                } else {
                    pixels[y * QR_WIDTH + x] = backgroundColor;
                }
            }
        }
        // 生成二维码图片的格式,使用ARGB_8888
        bitmap = Bitmap.createBitmap(QR_WIDTH, QR_HEIGHT, Bitmap.Config.ARGB_8888);
        bitmap.setPixels(pixels, 0, QR_WIDTH, 0, 0, QR_WIDTH, QR_HEIGHT);
    } catch (WriterException e) {
        e.printStackTrace();
    }
    return bitmap;
}
Also used : Bitmap(android.graphics.Bitmap) QRCodeWriter(com.google.zxing.qrcode.QRCodeWriter) EncodeHintType(com.google.zxing.EncodeHintType) Hashtable(java.util.Hashtable) BitMatrix(com.google.zxing.common.BitMatrix) WriterException(com.google.zxing.WriterException)

Example 7 with QRCodeWriter

use of com.google.zxing.qrcode.QRCodeWriter in project run-wallet-android by runplay.

the class QR method generateImage.

public static final Bitmap generateImage(final String text, Activity activity) {
    if (text == null || text.trim().isEmpty()) {
        return null;
    }
    int size = 390;
    Map<EncodeHintType, Object> hintMap = new EnumMap<>(EncodeHintType.class);
    hintMap.put(EncodeHintType.CHARACTER_SET, "UTF-8");
    hintMap.put(EncodeHintType.MARGIN, 1);
    QRCodeWriter qrCodeWriter = new QRCodeWriter();
    try {
        BitMatrix byteMatrix = qrCodeWriter.encode(text, BarcodeFormat.QR_CODE, size, size, hintMap);
        int height = byteMatrix.getHeight();
        int width = byteMatrix.getWidth();
        final Bitmap qrImage = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565);
        for (int x = 0; x < width; x++) {
            for (int y = 0; y < height; y++) {
                qrImage.setPixel(x, y, byteMatrix.get(x, y) ? Color.BLACK : Color.WHITE);
            }
        }
        Bitmap background = Bitmap.createScaledBitmap(((BitmapDrawable) B.getDrawable(activity, R.drawable.qr_bg)).getBitmap(), 390, 90, false);
        Bitmap bmOverlay = Bitmap.createBitmap(qrImage.getWidth(), qrImage.getHeight() + 90, qrImage.getConfig());
        Canvas canvas = new Canvas(bmOverlay);
        canvas.drawBitmap(qrImage, 0, 90, null);
        canvas.drawBitmap(background, 0, 0, null);
        return bmOverlay;
    } catch (WriterException e) {
        Log.e("QR.ex", "" + e.getMessage());
    }
    return null;
}
Also used : QRCodeWriter(com.google.zxing.qrcode.QRCodeWriter) Bitmap(android.graphics.Bitmap) EncodeHintType(com.google.zxing.EncodeHintType) Canvas(android.graphics.Canvas) BitMatrix(com.google.zxing.common.BitMatrix) EnumMap(java.util.EnumMap) Paint(android.graphics.Paint) WriterException(com.google.zxing.WriterException)

Example 8 with QRCodeWriter

use of com.google.zxing.qrcode.QRCodeWriter in project Signal-Android by signalapp.

the class QrCode method create.

@NonNull
public static Bitmap create(String data) {
    try {
        BitMatrix result = new QRCodeWriter().encode(data, BarcodeFormat.QR_CODE, 512, 512);
        Bitmap bitmap = Bitmap.createBitmap(result.getWidth(), result.getHeight(), Bitmap.Config.ARGB_8888);
        for (int y = 0; y < result.getHeight(); y++) {
            for (int x = 0; x < result.getWidth(); x++) {
                if (result.get(x, y)) {
                    bitmap.setPixel(x, y, Color.BLACK);
                }
            }
        }
        return bitmap;
    } catch (WriterException e) {
        Log.w(TAG, e);
        return Bitmap.createBitmap(512, 512, Bitmap.Config.ARGB_8888);
    }
}
Also used : QRCodeWriter(com.google.zxing.qrcode.QRCodeWriter) Bitmap(android.graphics.Bitmap) BitMatrix(com.google.zxing.common.BitMatrix) WriterException(com.google.zxing.WriterException) NonNull(android.support.annotation.NonNull)

Example 9 with QRCodeWriter

use of com.google.zxing.qrcode.QRCodeWriter in project AndroidStudy by tinggengyan.

the class QRCodeUtil method createQRImage.

/**
 * 生成二维码Bitmap
 *
 * @param content   内容
 * @param widthPix  图片宽度
 * @param heightPix 图片高度
 * @param logoBm    二维码中心的Logo图标(可以为null)
 * @return 生成二维码及保存文件是否成功
 */
public static Bitmap createQRImage(String content, int widthPix, int heightPix, Bitmap logoBm) {
    Bitmap bitmap = null;
    try {
        if (content == null || "".equals(content)) {
            return null;
        }
        // 配置参数
        Map<EncodeHintType, Object> hints = new HashMap<>();
        hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
        // 容错级别
        hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);
        // 设置空白边距的宽度
        // hints.put(EncodeHintType.MARGIN, 2); //default is 4
        // 图像数据转换,使用了矩阵转换
        BitMatrix bitMatrix = new QRCodeWriter().encode(content, BarcodeFormat.QR_CODE, widthPix, heightPix, hints);
        int[] pixels = new int[widthPix * heightPix];
        // 两个for循环是图片横列扫描的结果
        for (int y = 0; y < heightPix; y++) {
            for (int x = 0; x < widthPix; x++) {
                if (bitMatrix.get(x, y)) {
                    pixels[y * widthPix + x] = 0xff000000;
                } else {
                    pixels[y * widthPix + x] = 0xffffffff;
                }
            }
        }
        // 生成二维码图片的格式,使用ARGB_8888
        bitmap = Bitmap.createBitmap(widthPix, heightPix, Bitmap.Config.ARGB_8888);
        bitmap.setPixels(pixels, 0, widthPix, 0, 0, widthPix, heightPix);
        if (logoBm != null) {
            bitmap = addLogo(bitmap, logoBm);
        }
    // 必须使用compress方法将bitmap保存到文件中再进行读取。直接返回的bitmap是没有任何压缩的,内存消耗巨大!
    } catch (Exception e) {
        e.printStackTrace();
    }
    return bitmap;
}
Also used : Bitmap(android.graphics.Bitmap) QRCodeWriter(com.google.zxing.qrcode.QRCodeWriter) EncodeHintType(com.google.zxing.EncodeHintType) HashMap(java.util.HashMap) BitMatrix(com.google.zxing.common.BitMatrix)

Example 10 with QRCodeWriter

use of com.google.zxing.qrcode.QRCodeWriter in project Pix-Art-Messenger by kriztan.

the class BarcodeProvider method create2dBarcodeBitmap.

public static Bitmap create2dBarcodeBitmap(String input, int size) {
    try {
        final QRCodeWriter barcodeWriter = new QRCodeWriter();
        final Hashtable<EncodeHintType, Object> hints = new Hashtable<>();
        hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M);
        final BitMatrix result = barcodeWriter.encode(input, BarcodeFormat.QR_CODE, size, size, hints);
        final int width = result.getWidth();
        final int height = result.getHeight();
        final int[] pixels = new int[width * height];
        for (int y = 0; y < height; y++) {
            final int offset = y * width;
            for (int x = 0; x < width; x++) {
                pixels[offset + x] = result.get(x, y) ? Color.BLACK : Color.WHITE;
            }
        }
        final Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
        bitmap.setPixels(pixels, 0, width, 0, 0, width, height);
        return bitmap;
    } catch (final Exception e) {
        e.printStackTrace();
        return null;
    }
}
Also used : QRCodeWriter(com.google.zxing.qrcode.QRCodeWriter) Bitmap(android.graphics.Bitmap) EncodeHintType(com.google.zxing.EncodeHintType) Hashtable(java.util.Hashtable) BitMatrix(com.google.zxing.common.BitMatrix) FileNotFoundException(java.io.FileNotFoundException)

Aggregations

BitMatrix (com.google.zxing.common.BitMatrix)32 QRCodeWriter (com.google.zxing.qrcode.QRCodeWriter)32 EncodeHintType (com.google.zxing.EncodeHintType)24 WriterException (com.google.zxing.WriterException)22 Bitmap (android.graphics.Bitmap)19 Hashtable (java.util.Hashtable)12 HashMap (java.util.HashMap)7 BufferedImage (java.awt.image.BufferedImage)6 IOException (java.io.IOException)5 EnumMap (java.util.EnumMap)5 BinaryBitmap (com.google.zxing.BinaryBitmap)4 ErrorCorrectionLevel (com.google.zxing.qrcode.decoder.ErrorCorrectionLevel)4 Graphics2D (java.awt.Graphics2D)4 Color (java.awt.Color)3 Paint (android.graphics.Paint)2 NonNull (android.support.annotation.NonNull)2 Sigchain (co.krypt.krypton.team.Sigchain)2 BarcodeFormat (com.google.zxing.BarcodeFormat)2 BarcodeEncoder (com.journeyapps.barcodescanner.BarcodeEncoder)2 ByteArrayOutputStream (java.io.ByteArrayOutputStream)2