我正在使用Google开源Java Zxing创建者: http://code.google.com/p/zxing/

创建QR码。我已经准备就绪并工作(我正在使用ColdFusion加载Java文件,并将图像写入浏览器。)

我现在想要的是将黑色QR颜色更改为其他东西。有什么简单的方法吗?

我需要编辑编码版本Java文件的分解版吗?还是有一种方法可以在编码例程中添加颜色参数?

谢谢肖恩

有帮助吗?

解决方案

MatrixToImageWriter.java (我认为您正在使用), javase/ 更改常数 BLACK. 。它是一个 int 以ARGB格式,目前具有价值 0xFF000000. 。将alpha值留在 0xFF. 。更改其余的以描述您的颜色以十六进制格式。你可以做同样的事情 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);
   }

最终将您的彩色像素设置为位图:

bitmap.setPixels(allpixels, 0, bitmap.getWidth(), 0, 0, bitmap.getWidth(), bitmap.getHeight());

return Bitmap.createScaledBitmap(bitmap, qrCodeDimension, qrCodeDimension, false);

这就是我解决问题的方式。希望这对您有帮助。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top