我正在尝试使用Java的Google zxing库编写彩色的qrcode。此示例似乎使用了ARGB颜色,效果很好。
不幸的是,我必须在应用程序中使用HTML / Hex值作为颜色,所以我试图弄清楚如何构建或转换它。
我通常会构建RGB颜色,并使用alpha值作为其前缀。但是,尽管RGB值最多可以为255-3位数字,但MatrixToImageWriter中的参数似乎只能使用8位数字。这意味着每种颜色只有两位数字。
“ MatrixToImageConfig(-10223615,-1)”具有什么样的价值?有人可以给我解释一下这些颜色值,或者给我一个例子来计算HTML值吗?
谢谢!
QRCodeWriter qrCodeWriter = new QRCodeWriter();
BitMatrix bitMatrix = qrCodeWriter.encode(createQRCodeContent, BarcodeFormat.QR_CODE, createQRCodeSize, createQRCodeSize);
// Color
MatrixToImageConfig conf = new MatrixToImageConfig(-10223615,-1);
BufferedImage qrcode = MatrixToImageWriter.toBufferedImage(bitMatrix, conf);
File qrfile = new File (targetPath);
ImageIO.write(qrcode, "png", qrfile);
答案 0 :(得分:0)
回答我自己的问题:
String hex = "#ffffff00";
//-16711681 in ARGB int, for example used in Google's zxing library for colored qrcodes
System.out.println(toARGB(hex));
public static int toARGB(String nm) {
Long intval = Long.decode(nm);
long i = intval.intValue();
int a = (int) ((i >> 24) & 0xFF);
int r = (int) ((i >> 16) & 0xFF);
int g = (int) ((i >> 8) & 0xFF);
int b = (int) (i & 0xFF);
return ((a & 0xFF) << 24) |
((b & 0xFF) << 16) |
((g & 0xFF) << 8) |
((r & 0xFF) << 0);
}