- 论坛徽章:
- 0
|
生成透明的二维码,用木纹做背景,真有点入木三分的感觉.
上面的那张是不是比下面的那张好看多了?
代码:- // 生成QR图
- private Bitmap createQRCodeBitmap(String text) {
- int QR_WIDTH = 200, QR_HEIGHT = 200;
- try {
- // 需要引入core包
- QRCodeWriter writer = new QRCodeWriter();
-
- Log.i(TAG, "生成的文本:" + text);
- if (text == null || "".equals(text) || text.length() < 1) {
- return null;
- }
-
- Hashtable<EncodeHintType, String> hints = new Hashtable<EncodeHintType, String>();
- hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
- //比特矩阵
- BitMatrix bitMatrix = new QRCodeWriter().encode(text,
- BarcodeFormat.QR_CODE, QR_WIDTH, QR_HEIGHT, hints);
- int[] pixels = new int[QR_WIDTH * QR_HEIGHT];
- //比特矩阵转颜色数组
- for (int y = 0; y < QR_HEIGHT; y++) {
- for (int x = 0; x < QR_WIDTH; x++) {
- if (bitMatrix.get(x, y)) {
- pixels[y * QR_WIDTH + x] = 0xff000000;//黑点
- } else {
- pixels[y * QR_WIDTH + x] = 0x00ffffff;//透明点,白点为0xffffffff
- }
-
- }
- }
-
- //解析颜色数组,其他的java平台可以选择其他的API
- Bitmap bitmap = Bitmap.createBitmap(QR_WIDTH, QR_HEIGHT,
- Bitmap.Config.ARGB_8888);
-
- bitmap.setPixels(pixels, 0, QR_WIDTH, 0, 0, QR_WIDTH, QR_HEIGHT);
- return bitmap;
-
- } catch (WriterException e) {
- e.printStackTrace();
- return null;
- }
- }
复制代码
|
|