我正在使用此方法从文本创建QR码:
public static Bitmap TextToImageEncode(String Value, int width, int height, Context context) throws WriterException {
BitMatrix bitMatrix;
try {
bitMatrix = new MultiFormatWriter().encode(
Value,
BarcodeFormat.DATA_MATRIX.QR_CODE,
width, height, null
);
} catch (IllegalArgumentException Illegalargumentexception) {
return null;
}
int bitMatrixWidth = bitMatrix.getWidth();
int bitMatrixHeight = bitMatrix.getHeight();
Log.e("Bit Matrix w, h: ", bitMatrix.getWidth()+" "+ bitMatrixHeight);
int[] pixels = new int[bitMatrixWidth * bitMatrixHeight];
for (int y = 0; y < bitMatrixHeight; y++) {
int offset = y * bitMatrixWidth;
for (int x = 0; x < bitMatrixWidth; x++) {
pixels[offset + x] = bitMatrix.get(x, y) ?
context.getResources().getColor(R.color.black) : context.getResources().getColor(R.color.white);
}
}
Bitmap bitmap = Bitmap.createBitmap(bitMatrixWidth, bitMatrixHeight, Bitmap.Config.ARGB_4444);
bitmap.setPixels(pixels, 0, 500, 0, 0, bitMatrixWidth, bitMatrixHeight);
return bitmap;
}
但是,结果是我的QR码周围有空白,并且由于我的应用具有深色背景,因此会产生一些问题。
我知道这不是布局问题,因为我通过将QR码图像直接添加到我的 ImageView 中进行了测试。这样就可以正常工作。
我记录了bitMatrix的高度和宽度,以查看它们获得的值,并且这些值与调用该方法时指定的高度/宽度相同(500)。我不明白发生了什么。