Android 生成带logo的二维码
来源:互联网 发布:预算软件 编辑:程序博客网 时间:2024/05/22 02:01
这里提供一个生成 带logo的工具类:
package com.xxx.util;import android.graphics.Bitmap;import android.graphics.Matrix;import com.google.zxing.BarcodeFormat;import com.google.zxing.EncodeHintType;import com.google.zxing.WriterException;import com.google.zxing.common.BitMatrix;import com.google.zxing.qrcode.QRCodeWriter;import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;import java.util.Hashtable;public class QRCode { private static int IMAGE_HALFWIDTH = 50;//宽度值,影响中间图片大小 /** * 生成二维码,默认大小为500*500 * * @param text 需要生成二维码的文字、网址等 * @return bitmap */ public static Bitmap createQRCode(String text) { return createQRCode(text, 500); } /** * 生成二维码 * * @param text 需要生成二维码的文字、网址等 * @param size 需要生成二维码的大小() * @return bitmap */ public static Bitmap createQRCode(String text, int size) { try { Hashtable<EncodeHintType, String> hints = new Hashtable<>(); hints.put(EncodeHintType.CHARACTER_SET, "utf-8"); BitMatrix bitMatrix = new QRCodeWriter().encode(text, BarcodeFormat.QR_CODE, size, size, hints); int[] pixels = new int[size * size]; for (int y = 0; y < size; y++) { for (int x = 0; x < size; x++) { if (bitMatrix.get(x, y)) { pixels[y * size + x] = 0xff000000; } else { pixels[y * size + x] = 0xffffffff; } } } Bitmap bitmap = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888); bitmap.setPixels(pixels, 0, size, 0, 0, size, size); return bitmap; } catch (WriterException e) { e.printStackTrace(); return null; } } /** * 生成带logo的二维码,默认二维码的大小为500,logo为二维码的1/5 * * @param text 需要生成二维码的文字、网址等 * @param mBitmap logo文件 * @return bitmap */ public static Bitmap createQRCodeWithLogo(String text, Bitmap mBitmap) { return createQRCodeWithLogo(text, 500, mBitmap); } /** * 生成带logo的二维码,logo默认为二维码的1/5 * * @param text 需要生成二维码的文字、网址等 * @param size 需要生成二维码的大小() * @param mBitmap logo文件 * @return bitmap */ public static Bitmap createQRCodeWithLogo(String text, int size, Bitmap mBitmap) { try { IMAGE_HALFWIDTH = size / 10; Hashtable<EncodeHintType, Object> hints = new Hashtable<>(); hints.put(EncodeHintType.CHARACTER_SET, "utf-8"); /* * 设置容错级别,默认为ErrorCorrectionLevel.L * 因为中间加入logo所以建议你把容错级别调至H,否则可能会出现识别不了 */ hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H); BitMatrix bitMatrix = new QRCodeWriter().encode(text, BarcodeFormat.QR_CODE, size, size, hints); int width = bitMatrix.getWidth();//矩阵高度 int height = bitMatrix.getHeight();//矩阵宽度 int halfW = width / 2; int halfH = height / 2; Matrix m = new Matrix(); float sx = (float) 2 * IMAGE_HALFWIDTH / mBitmap.getWidth(); float sy = (float) 2 * IMAGE_HALFWIDTH / mBitmap.getHeight(); m.setScale(sx, sy); //设置缩放信息 //将logo图片按martix设置的信息缩放 mBitmap = Bitmap.createBitmap(mBitmap, 0, 0, mBitmap.getWidth(), mBitmap.getHeight(), m, false); int[] pixels = new int[size * size]; for (int y = 0; y < size; y++) { for (int x = 0; x < size; x++) { if (x > halfW - IMAGE_HALFWIDTH && x < halfW + IMAGE_HALFWIDTH && y > halfH - IMAGE_HALFWIDTH && y < halfH + IMAGE_HALFWIDTH) { //该位置用于存放图片信息 //记录图片每个像素信息 pixels[y * width + x] = mBitmap.getPixel(x - halfW + IMAGE_HALFWIDTH, y - halfH + IMAGE_HALFWIDTH); } else { if (bitMatrix.get(x, y)) { pixels[y * size + x] = 0xff000000; } else { pixels[y * size + x] = 0xffffffff; } } } } Bitmap bitmap = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888); bitmap.setPixels(pixels, 0, size, 0, 0, size, size); return bitmap; } catch (WriterException e) { e.printStackTrace(); return null; } }}
然后在用到的地方调用就ok了;
String contnet="feeling";Bitmap bitmap = QRCode.createQRCodeWithLogo(contnet, 500, BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher));iv_two_code.setImageBitmap(bitmap);
Demo链接:http://download.csdn.net/download/qq_36255612/10014292
阅读全文
2 0
- android生成带logo的二维码
- Android 生成带logo的二维码
- Android 二维码生成 带logo
- Android 生成二维码 带LOGO的二维码 条形码
- 生成带logo的二维码
- 带logo的二维码生成
- android 带与不带logo的二维码生成
- Android生成带LOGO图片二维码的方法
- Android生成带LOGO图片二维码的方法
- Android生成带LOGO图片二维码的方法
- Android利用ZXing生成带LOGO的二维码图片
- Android生成带LOGO图片二维码的方法
- 生成二维码(中间带logo) android
- 【iOS开发】二维码生成 二维码读取 (带Logo的二维码)
- PHP生成自带logo的二维码
- php生成带logo的二维码
- 生成带logo的二维码图片
- python实现生成带Logo的二维码
- js语言ES6,coffeescript,typescript的区别
- 最后一个单词的长度
- [Ceph分析]Fuse流程分析
- c++11之override和final
- (Maven)安装oracle6.jar包到本地仓库
- Android 生成带logo的二维码
- 网页首图抓住用户注意力的要点
- java HttpExchange返回中文报错 too many bytes to write to stream
- QT5.2中文乱码解决问题
- [Brainfuck]基于Whitespace语言保密思想的BF语句构建-(无字天书)
- 手机游戏的摇杆
- iOS实现排序
- 防火墙配置--多出口
- Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock