Zxingを使用して色付きQRコードを作成します
質問
私はGoogleのオープンソースJava Zxing Creatorを使用しています: http://code.google.com/p/zxing/
QRコードを作成します。私はすべてを整備し、動作しています(ColdFusionを使用してJavaファイルをロードし、画像をブラウザに書き込みます)。
私が今欲しいのは、黒いQRの色を何か他のものに変更することです。これを行う簡単な方法はありますか?
エンコーダーJavaファイルの分解バージョンを編集する必要がありますか?それとも、エンコードルーチンに色の引数を追加する方法はありますか?
Shaunに感謝します
解決
の MatrixToImageWriter.java
(私はあなたが使用していると思います)、下 javase/
定数を変更します BLACK
. 。それはです int
Argb形式で、現在価値があります 0xFF000000
. 。アルファ値をに残します 0xFF
. 。残りを変更して、16進形式で色を説明します。同じことができます WHITE
もし良かったら。
他のヒント
これを試して ::
BitMatrix matrix = new QRCodeWriter().encode(data, BarcodeFormat.QR_CODE, this.width, this.height, getEncodeHints());
/*
Here the config object represents the QR Code colors.
i.e. Brown and White respectively
*/
MatrixToImageConfig conf = new MatrixToImageConfig(-10223615,-1);
BufferedImage qrcode = MatrixToImageWriter.toBufferedImage(matrix, conf);
以下のように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);
}
Finalyは、色付きのピクセルをビットマップに設定します。
bitmap.setPixels(allpixels, 0, bitmap.getWidth(), 0, 0, bitmap.getWidth(), bitmap.getHeight());
return Bitmap.createScaledBitmap(bitmap, qrCodeDimension, qrCodeDimension, false);
これが私が問題を解決した方法です。これがあなたに役立つことを願っています。
所属していません StackOverflow