我假设您正在生成如下二维码:
QRCodeEncoder qrCodeEncoder = new QRCodeEncoder(code,null,
Contents.Type.TEXT,
BarcodeFormat.QR_CODE.toString(),
yourDimension);
您的输出尺寸将基于您的代码。将尺寸设置得尽可能低。所以你可以找到你想要改变颜色的二维码位置的确切位置。
比从位图中获取像素:
int[] allpixels = new int[bitmap.getHeight() * bitmap.getWidth()];
bitmap.getPixels(allpixels, 0, bitmap.getWidth(), 0, 0, bitmap.getWidth(), bitmap.getHeight());
以及你想要的颜色像素:
for (int i = 6; i < 9; i++) {
allpixels[i] = Color.Red; // your rgb color
}
将每个设备的 dp 转换为 px:
qrCodeDimension = dpToPx((int) getResources().getDimension(R.dimen.qr_dimen));
public static int dpToPx(int dp) {
return (int) (dp * Resources.getSystem().getDisplayMetrics().density);
}
最后将彩色像素设置为位图:
bitmap.setPixels(allpixels, 0, bitmap.getWidth(), 0, 0, bitmap.getWidth(), bitmap.getHeight());
return Bitmap.createScaledBitmap(bitmap, qrCodeDimension, qrCodeDimension, false);
这就是我解决问题的方法。我希望这会对你有所帮助。