倒Zxing依赖

implementation 'cn.bingoogolapple:bga-qrcode-zxing:1.2.1'

代码段

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 MY_WIDTH = 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 {MY_WIDTH = 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 * MY_WIDTH / mBitmap.getWidth();float sy = (float) 2 * MY_WIDTH/ 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 - MY_WIDTH && x < halfW + MY_WIDTH&& y > halfH - MY_WIDTH&& y < halfH + MY_WIDTH) {//该位置用于存放图片信息//记录图片每个像素信息pixels[y * width + x] = mBitmap.getPixel(x - halfW+ MY_WIDTH, y - halfH + MY_WIDTH);} 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;}
}
}

Activity里面要写的代码

public class MainActivity extends AppCompatActivity {ImageView imageView;
Button button;@Override
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);imageView = findViewById(R.id.images);button = findViewById(R.id.button);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {String contnet="啊哈"; //二维码的内容Bitmap bitmap = QRCode.createQRCodeWithLogo(contnet, 500,BitmapFactory.decodeResource(getResources(), R.drawable.yan));//用背景图接受二维码imageView.setImageBitmap(bitmap);}});
}
}

布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"><Buttonandroid:id="@+id/button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="生成二维码"/><ImageViewandroid:id="@+id/images"android:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@drawable/yan"android:layout_centerInParent="true"/>
</RelativeLayout>

zxing生成带logo的二维码相关推荐

  1. 使用zxing生成带logo的二维码图片,自动调节logo图片相对二维码图片的大小

    使用zxing生成带logo的二维码图片,自动调节logo图片相对二维码图片的大小  * 可选是否带logo,可选是否保存二维码图片:结果返回base64编码的图片数据字符串  * 页面显示:< ...

  2. .NET ZXING 生成带logo的二维码和普通二维码及条型码

    工作中使用到了,就随笔记下了.希望可以帮助有需要的同学们. /// <summary>         /// 生成二维码         /// </summary>     ...

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

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

  4. jQuery生成带Logo的二维码

    用zxing生成二维码并解析:https://blog.csdn.net/qq_41879385/article/details/81320723 用QR Code生成和解析二维码文章地址:https ...

  5. 实现扫描二维码和生成带logo的二维码

    欢迎来到风的博客 今天讲的是如何引用google的zxing库实现扫描二维码和生成带logo的二维码,源码库可以从github上下载[https://github.com/zxing/zxing];在 ...

  6. iOS 生成带 logo 的二维码,区域截屏保存至相册(小功能二连发 (一))

    原文链接:http://www.jianshu.com/p/36e9f012ef39 生成带 logo 的二维码 区域截屏相关 -- 由3033分享 开篇 最近项目需要搞了几个相对独立的小功能,今天有 ...

  7. asp.net 后台生成二维码及生成带logo的二维码

    asp.net 后台生成二维码及生成带logo的二维码,此处将生成二维码和带Logo的二维码写在一起的,需要自己区分一下. 直接上代码 using System; using System.Colle ...

  8. vue 生成带logo的二维码 qrcode-vue 支持下载图片 实例详解

    最近的项目上有个需求,生成带logo的二维码,网上大部分都是基于JQ插件jQuery.qrcode.对于vue项目并不适用,翻阅了大量资料后,我找到了qrcode-vue这款基于vue的生成二维码的插 ...

  9. Golang使用qrcode生成二维码,以及生成带logo的二维码

    添加并引用依赖 go get github.com/boombuler/barcodeimport ("github.com/skip2/go-qrcode" ) 1.生成字节形式 ...

最新文章

  1. 使用C#中的ref关键字,用2个简单例子来说明
  2. dash plotly
  3. 设计微服务架构需要掌握的基础知识
  4. PYTORCH:DenseNet做新冠肺炎CT照片是否确诊分类
  5. 【git】之使用shell脚本提交代码
  6. oracle两种导出导入方式,即imp与impdp之比较
  7. syslog-ng按源ip保存记录
  8. 计算机应用教程卢湘鸿,计算机应用教程
  9. 单片机c语言 课后答案,十天学会单片机C语言_郭天祥---课后习题答案
  10. spwm matlab仿真,H桥逆变器SPWMMATLAB仿真
  11. CTF---Web入门第十六题 天下武功唯快不破
  12. java实现根据高德地图API接口进行地址位置解析,将地址转化为经纬度
  13. 自旋锁使用场景和实现分析(转载)
  14. 【细胞分割】原子力显微镜图像分析【含GUI Matlab源码 1371期】
  15. SpringBoot2.2.2+Elasticsearch7.6.2实现中文、拼音、拼音首字母智能提示功能
  16. 校验码 - 奇偶校验
  17. 如何多个进程监听同一个端口
  18. 股票入门基础知识笔记
  19. ThreadPoolExecutor 线程池的使用
  20. 特来电最新财务数据曝光:年亏7770万,与星星充电争抢上市

热门文章

  1. 利用python构建马科维茨_使用CVXOPT包实现马科维茨投资组合优化
  2. body加背景图片没反应_css设置背景图片不显示问题
  3. Ubuntu 下无线网卡RTL8723BE不稳定的解决办法
  4. MATLAB三维画图函数使用总结
  5. jdon的设计模式详细解读
  6. 最长的指定瑕疵度的元音字串
  7. Ubuntu虚拟机安装EDA工具:VCS+Verdi+dve2018方法教程
  8. Cocoa -- 添加和移除开机启动项
  9. 扎克伯格“致敬”微信,但Facebook Pay能像微信支付一样成功吗?
  10. 【排序算法】冒泡排序|选择排序|插入排序|希尔排序