普通二维码和自定义二维码的生成
来源:互联网 发布:淘宝c店详情页尺寸 编辑:程序博客网 时间:2024/05/21 16:22
1,本次使用的是ZXing二维码。
1、//生成普通二维码
Bitmap bitmap = generateBitmap("http://blog.csdn.net/yanzhenjie1003/article/details/52503533", 400, 400);
iv.setImageBitmap(bitmap);
2、 //生成自定义的二维码
//先生成二维码
Bitmap bitmap = generateBitmap("http://blog.csdn.net/yanzhenjie1003/article/details/52503533", 400, 400);
//添加logo
//先得到一个logo图标
Bitmap logoBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.a);
//把logo添加到二维码上
Bitmap customBitmap = addLogo(bitmap, logoBitmap);
iv.setImageBitmap(customBitmap);
//生成二维码
private Bitmap generateBitmap(String content, int width, int height) {
QRCodeWriter qrCodeWriter = new QRCodeWriter();
Map<EncodeHintType, String> hints = new HashMap<>();
hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
try {
BitMatrix encode = qrCodeWriter.encode(content, BarcodeFormat.QR_CODE, width, height);
int[] pixels = new int[width * height];
for (int i = 0; i < height; i++) {
for (int j = 0; j < width; j++) {
if (encode.get(j, i)) {
pixels[i * width + j] = 0x00000000;
} else {
pixels[i * width + j] = 0xffffffff;
}
}
}
return Bitmap.createBitmap(pixels, 0, width, width, height, Bitmap.Config.RGB_565);
} catch (WriterException e) {
e.printStackTrace();
}
return null;
}
/**
* 添加图标
*
* @param qrBitmap
* @param logoBitmap
* @return
*/
private Bitmap addLogo(Bitmap qrBitmap, Bitmap logoBitmap) {
int qrBitmapWidth = qrBitmap.getWidth();
int qrBitmapHeight = qrBitmap.getHeight();
int logoBitmapWidth = logoBitmap.getWidth();
int logoBitmapHeight = logoBitmap.getHeight();
Bitmap blankBitmap = Bitmap.createBitmap(qrBitmapWidth, qrBitmapHeight, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(blankBitmap);
canvas.drawBitmap(qrBitmap, 0, 0, null);
canvas.save(Canvas.ALL_SAVE_FLAG);
float scaleSize = 1.0f;
while ((logoBitmapWidth / scaleSize) > (qrBitmapWidth / 5) || (logoBitmapHeight / scaleSize) > (qrBitmapHeight / 5)) {
scaleSize *= 2;
}
float sx = 1.0f / scaleSize;
canvas.scale(sx, sx, qrBitmapWidth / 2, qrBitmapHeight / 2);
canvas.drawBitmap(logoBitmap, (qrBitmapWidth - logoBitmapWidth) / 2, (qrBitmapHeight - logoBitmapHeight) / 2, null);
canvas.restore();
return blankBitmap;
}
- 普通二维码和自定义二维码的生成
- 普通二维码和带图片二维码生成
- 生成二维码、自定义二维码
- ionic生成二维码和普通页面生成二维码js
- 普通二维码生成
- 二维码的扫描和生成二维码
- 二维码生成(CIFilter生成二维码,清晰度高的二维码,自定义颜色的二维码,带logo的二维码)
- 利用jquery-qrcod生成二维码(普通二维码&带头像的二维码)
- IOS 中实现自定义扫描二维码和生成二维码
- 二维码生成和二维码扫描
- 扫描二维码和生成二维码
- 生成二维码和扫描二维码
- 扫描二维码和生成二维码
- 二维码的生成和读取
- 二维码的扫描和生成
- 二维码的扫描和生成
- 二维码的生成和扫描
- 二维码的生成和扫描
- Jenkins进阶系列之——08Jenkins纳入版本控制
- Jenkins进阶系列之——09配置Linux系统ssh免密码登陆
- dpdk hugepage
- Jenkins进阶系列之——10Publish Over SSH插件
- 数据库<11.1>视图
- 普通二维码和自定义二维码的生成
- Problem A: STL——邮票
- Jenkins进阶系列之——11修改Jenkins用户的密码
- android studio 查看模拟器或者手机sql数据库
- Jenkins进阶系列之——12详解Jenkins节点配置
- 最短路径(邻接矩阵)-Dijkstra算法
- spark 运行问题总结
- Problem B: STL——多重集的插入和删除
- LintCode 44 最小子数组