android加载二维码带中间logo

很简单的,我也是先看了很多博客,然后总结了一下,感谢万能的网友

1导入依赖

//二维码加载依赖
implementation 'com.google.zxing:core:3.3.0'

implementation 和 compile 之间的区别可以百度下,我使用前者,很快

2,建立工具类

import android.graphics.Bitmap;
import android.graphics.Canvas;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.HashMap;
import java.util.Map;/*** 二维码生成工具类* Created by Quan* on 2019/2/13.*/public class ZXingUtils {/*** 生成带logo二维码* 要转换的地址或字符串,可以是中文** @param url* @param width* @param height* @param logoBm* @return*/public static Bitmap createQRImage(String url, final int width, final int height,Bitmap logoBm) {try {// 判断URL合法性if (url == null || "".equals(url) || url.length() < 1) {return null;}//配置参数Map<EncodeHintType, Object> hints = new HashMap<EncodeHintType, Object>();//容错级别hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);//设置空白边距的宽度hints.put(EncodeHintType.MARGIN, 1); //default is 4hints.put(EncodeHintType.CHARACTER_SET, "utf-8");// 图像数据转换,使用了矩阵转换BitMatrix bitMatrix = new QRCodeWriter().encode(url,BarcodeFormat.QR_CODE, width, height, hints);int[] pixels = new int[width * height];// 下面这里按照二维码的算法,逐个生成二维码的图片,// 两个for循环是图片横列扫描的结果for (int y = 0; y < height; y++) {for (int x = 0; x < width; x++) {if (bitMatrix.get(x, y)) {pixels[y * width + x] = 0xff000000;} else {pixels[y * width + x] = 0xffffffff;}}}// 生成二维码图片的格式,使用ARGB_8888Bitmap bitmap = Bitmap.createBitmap(width, height,Bitmap.Config.ARGB_8888);bitmap.setPixels(pixels, 0, width, 0, 0, width, height);if (logoBm != null) {bitmap = addLogo(bitmap, logoBm);}return bitmap;} catch (WriterException e) {e.printStackTrace();}return null;}/*** 在二维码中间添加Logo图案*/private static Bitmap addLogo(Bitmap src, Bitmap logo) {if (src == null) {return null;}if (logo == null) {return src;}//获取图片的宽高int srcWidth = src.getWidth();int srcHeight = src.getHeight();int logoWidth = logo.getWidth();int logoHeight = logo.getHeight();if (srcWidth == 0 || srcHeight == 0) {return null;}if (logoWidth == 0 || logoHeight == 0) {return src;}//logo大小为二维码整体大小的1/5float scaleFactor = srcWidth * 1.0f / 5 / logoWidth;Bitmap bitmap = Bitmap.createBitmap(srcWidth, srcHeight, Bitmap.Config.ARGB_8888);try {Canvas canvas = new Canvas(bitmap);canvas.drawBitmap(src, 0, 0, null);canvas.scale(scaleFactor, scaleFactor, srcWidth / 2, srcHeight / 2);canvas.drawBitmap(logo, (srcWidth - logoWidth) / 2, (srcHeight - logoHeight) / 2, null);canvas.save(Canvas.ALL_SAVE_FLAG);canvas.restore();} catch (Exception e) {bitmap = null;e.getStackTrace();}return bitmap;}}

3 在需要出调用

Bitmap bitmap = ZXingUtils.createQRImage(content, imgparams.width, imgparams.height, BitmapFactory.decodeResource(getResources(), R.mipmap.logo));
mImageView.setImageBitmap(bitmap);
mImageView.setLayoutParams(imgparams);

4 简单说明

addLogo()方法是添加中间图片的,在生成二维码的方法中调用,使用的时候传入4个参数

* @param url           文字或者地址信息

* @param width      二维码图片的宽

* @param height     二维码图片的高

* @param logoBm   logo文件素材

mImageView 是生成二维码的控件

好了,很简单吧

android加载二维码带中间logo相关推荐

  1. 图片加载 二维码 解析

    图片加载 二维码 解析 1. layout布局文件 (1)activity_category.xml <?xml version="1.0" encoding="u ...

  2. 百度网盘PC端扫描二维码登录时无法加载二维码问题解决方法

    问题: 今天在PC端扫描登录百度网盘时,二维码无法加载出来,具体情况如图: 解决方法: 1.打开IE浏览器 2.打开工具 3.打开Internet选项 4.打开高级选项,重置IE设置 5.点击确定,打 ...

  3. html直接加载二维码图片

    <html>     <body>         <img width="100px" height="100px;" src= ...

  4. iOS 生成二维码 带头像logo 头像logo带边框 圆角

    1 调用的地方 //生成带边框的圆角图片,这个圆角图标可以先生成,如果放在二维码生成时会影响图片生成速度. self.logo= [self createNewlogoViewView:centerL ...

  5. Android Studio 生成二维码、生成带logo的二维码

    1.生成二维码: 2.生成logo的二维码: 一.引入依赖 首先在libs文件目录下放进jar包zxing.jar,要下载zxing.jar就点击链接:下载zxing.jar(记得点击"Cd ...

  6. [Java] Java生成二维码带LOGO, LOGO加圆角白框

    先来看看效果: 实现: 生成指定文字内容的二维码 二维码中间嵌入LOGO 二维码做圆角和白色边框处理 新需求不断, 这不, 又来了个想生成带用户头像的需求. 蛮简单的- 在这里造完轮子分享给大家 因为 ...

  7. 对#Hello,2015征文#+Android 热敏打印机打印二维码(图片)博客的尝试

    原博客链接 #Hello,2015征文#+Android 热敏打印机打印二维码 昨天晚上说抽时间来写一篇关于Android 热敏打印机打印二维码和图片的文章,所幸在下班之前把它给写了,和大家分享吧.我 ...

  8. 微信小程序生成二维码带参海报

    微信小程序生成二维码带参海报 没错,就是用 canvas 来实现 文章目录 微信小程序生成二维码带参海报 获取屏幕分辨率比 生成二维码 获取网络图片并转为本地临时文件 绘制背景图片以及二维码 代码片段 ...

  9. Android平台下二维码漏洞攻击杂谈

    路人甲 · 2015/12/02 12:42 0x00 前言 现在Android App几乎都有二维码扫描功能,如果没有考虑到二维码可能存在的安全问题,将会导致扫描二维码就会受到漏洞攻击,严重的可能导 ...

最新文章

  1. PHP之源码目录结构
  2. Android远程桌面助手(B1391)
  3. Git——跟踪或取消跟踪文件
  4. P3806-【模板】点分治1
  5. flex和js进行参数传递
  6. php 判断函数禁用,php禁用函数设置及查看方法的介绍(附示例)
  7. 416. 分割等和子集(JavaScript)
  8. VB的doevents,制造多线程的效果
  9. 目标检测YOLO V5 C++版本
  10. 系统软件设计和性能的几个要点
  11. linux常用vim命令大全,Linux基础入门 vim常用命令详解
  12. 超图 三维 GIS 技术白皮书
  13. java编程语言怎么学习,详细说明
  14. ftp安装包windows版_连接远程Linux系统的免费SSH与FTP软件介绍
  15. 三、常规Dos命令附图
  16. python中area是什么意思_python之懒惰属性(延迟初始化)
  17. mysql实操《学生表》
  18. 获取全国行政区域划分数据
  19. linux如何把文件大小改为0,关于文件系统:Linux删除大小为0的文件
  20. 手写数字识别系统学习(1)

热门文章

  1. ping icmp和tcp区别:
  2. php global $_g;,global.php
  3. qt套件中未设置qt版本, NO C++ compiler set in kit
  4. 使用nero刻录光盘
  5. DSP28335学习之旅2-最小系统
  6. java实例化对象例子
  7. 乐趣无穷,用SQL语句给宝宝取名字(用电脑起名)
  8. xenserver通过xencenter登陆后,虚拟机console页面空白问题解决
  9. 解决安装VC6.0后出现MSDEV.EXE错误,无法用打开工程解决方法
  10. 韵达年营收417亿:同比增25% 阿里持股2%黄新华大幅减持