使用zxing创建彩色QR码

时间:2011-01-18 11:37:31

标签: colors qr-code zxing

我正在使用谷歌开源java zxing创建者:http://code.google.com/p/zxing/

创建QR码。我已经准备好了所有工作(我正在使用coldfusion加载java文件并将图像写入浏览器。)

我现在想要的是将黑色QR颜色更改为其他颜色。这样做有简单的方法吗?

我是否需要编辑编码器java文件的反编译版本?或者有没有办法为编码例程添加颜色参数?

由于 肖恩

3 个答案:

答案 0 :(得分:3)

MatrixToImageWriter.java(我假设您正在使用)中,在javase/下更改常量BLACK。它是ARGB格式的int,目前的值为0xFF000000。将alpha值保留为0xFF。更改其余部分以十六进制格式描述您的颜色。如果您愿意,也可以使用WHITE执行相同操作。

答案 1 :(得分:2)

试试这个::

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);

答案 2 :(得分:0)

我假设您正在生成如下代码:

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);

这就是我如何解决问题的方法。我希望这会帮助你。

相关问题