导入:
compile 'com.google.zxing:core:3.3.0'
工具类:
public class QRUtil { // 使用样例 // ImageView mQRCode = (ImageView) mView.findViewById(R.id.qrcode); // Bitmap bitmap = Utils.createQRImage(context, mQRCode, info); // if (bitmap != null && !bitmap.isRecycled()){ // mQRCode.setImageBitmap(bitmap); // } public static Bitmap createQRImage(Context context, View view, String id) { try { if (id == null || id.isEmpty()) { return null; } int width = 520; int height = 520; Hashtable<EncodeHintType, String> hints = new Hashtable<EncodeHintType, String>(); hints.put(EncodeHintType.CHARACTER_SET, "utf-8"); BitMatrix bitMatrix = new QRCodeWriter().encode(id, BarcodeFormat.QR_CODE, width, height, hints); bitMatrix = deleteWhite(bitMatrix); int[] rec = bitMatrix.getEnclosingRectangle(); width = rec[2] + 1; height = rec[3] + 1; int[] pixels = new int[width * height]; for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) { if (bitMatrix.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.setPixels(pixels, 0, width, 0, 0, width, height); return bitmap; } catch (WriterException e) { e.printStackTrace(); } return null; } public static BitMatrix deleteWhite(BitMatrix matrix) { int[] rec = matrix.getEnclosingRectangle(); int resWidth = rec[2] + 1; int resHeight = rec[3] + 1; BitMatrix resMatrix = new BitMatrix(resWidth, resHeight); resMatrix.clear(); for (int i = 0; i < resWidth; i++) { for (int j = 0; j < resHeight; j++) { if (matrix.get(i + rec[0], j + rec[1])) { resMatrix.set(i, j); } } } return resMatrix; } }