2

私はグーグルオープンソースJavazxingクリエーターを使用しています:http ://code.google.com/p/zxing/

QRコードを作成します。私はすべてを整えて動作しています(coldfusionを使用してJavaファイルをロードし、ブラウザに画像を書き込んでいます)。

私が今欲しいのは、黒のQRカラーを別のものに変更することです。これを行う簡単な方法はありますか?

エンコーダーJavaファイルの逆コンパイルされたバージョンを編集する必要がありますか?または、エンコーディングルーチンに色の引数を追加する方法はありますか?

ありがとうショーン

4

3 に答える 3

6

MatrixToImageWriter.java私はあなたが使用していると思います)でjavase/、定数を変更しBLACKます。これはintARGB形式であり、現在値があります0xFF000000。アルファ値はに残します0xFF。残りの部分を変更して、16進形式で色を記述します。必要に応じて、同じことを行うことができますWHITE

于 2011-01-18T13:30:33.637 に答える
4

これを試して ::

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);
于 2015-05-27T10:42:23.630 に答える
0

私はあなたが以下のような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);

これが私が問題を解決した方法です。これがお役に立てば幸いです。

于 2015-09-16T12:18:52.140 に答える