私はあなたが以下のような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);
これが私が問題を解決した方法です。これがお役に立てば幸いです。