【Android QR位图需要帮助才能删除保证金】相逢意气为君饮,系马高楼垂柳边。这篇文章主要讲述Android QR位图需要帮助才能删除保证金相关的知识,希望能为你提供帮助。
我已经将一个String编码为QR位图。图片变成这样:
文章图片
我需要更改什么才能在QR周围没有空格?我试着阅读有关MultiFormatWriter()和setPixels()的文档,但无法找出它出错的地方。这是代码:
Bitmap encodeAsBitmap(String str) throwsWriterException {
BitMatrix result;
try {
result = new MultiFormatWriter().encode(str,
BarcodeFormat.QR_CODE, 500, 500, null);
} catch (IllegalArgumentException iae) {
return null;
}int w = result.getWidth();
int h = result.getHeight();
int[] pixels = new int [w * h];
for (int i = 0;
i <
h;
i++) {
int offset = i * w;
for (int j = 0;
j <
w;
j++) {
pixels[offset + j] = result.get(i, j) ? BLACK : WHITE;
}
}Bitmap bitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
bitmap.setPixels(pixels, 0, 500, 0, 0, w, h);
return bitmap;
}
答案您应该使用提示参数来设置自定义边距。
Map<
EncodeHintType, Object>
hints = new EnumMap<
>
(EncodeHintType.class);
hints.put(EncodeHintType.MARGIN, marginSize);
BitMatrix result = new MultiFormatWriter().encode(contentsToEncode, BarcodeFormat.QR_CODE, imageWidth, imageHeight, hints);
另一答案我认为问题是你在Bitmap中设置像素的方式。
根据documentation:
stride int:要在行之间跳过的像素[]中的颜色数。通常,此值将与位图的宽度相同,但可以更大(或为负)。所以我建议如下:
bitmap.setPixels(pixels, 0, w, 0, 0, w, h);
编辑:刚刚注意到你假设输入的大小是500.你可以尝试计算它(假设你的字符串代表一个正方形)。如果它是一个矩形,你必须能够以某种方式计算大小,以便MultiFormatWriter可以读取它。
所以你的代码可以是:
Bitmap encodeAsBitmap(String str, int size) throwsWriterException {BitMatrix result;
try {
result = new MultiFormatWriter().encode(str,
BarcodeFormat.QR_CODE, size, size, null);
} catch (IllegalArgumentException iae) {
return null;
}int[] pixels = new int [size * size];
for (int i = 0;
i <
size;
i++) {
int offset = i * size;
for (int j = 0;
j <
size;
j++) {
pixels[offset + j] = result.get(i, j) ? BLACK : WHITE;
}
}Bitmap bitmap = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888);
bitmap.setPixels(pixels, 0, size, 0, 0, size, size);
return bitmap;
}
推荐阅读
- Android / Java - 在位图底部绘制文本
- Android - 将ImageView设置为URL
- Android SkImageDecoder :: Factory返回null错误
- 直接从Android活动下载图像
- 在android下载文件时更新进度条
- Android Firebase下载声音
- Android Studio(如何从自动完成中重新包含已排除的库())
- Chrome for Android显示自动填充即使自动填充(关闭)
- android在java.util.Objects.requireNonNull中获取空指针异常(Objects.java:203)