Я предполагаю, что вы генерируете код qr, как показано ниже:
QRCodeEncoder qrCodeEncoder = new QRCodeEncoder(code,null,
Contents.Type.TEXT,
BarcodeFormat.QR_CODE.toString(),
yourDimension);
Размер вашего вывода будет основан на вашем коде.Установите размер как можно ниже.Таким образом, вы можете найти точные позиции кодового места qr, которые вы хотите изменить цвет.
Чем получить ваши пиксели из растрового изображения с помощью:
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);
Вот так я решил проблему.Я надеюсь, что это поможет вам.