实现扫描二维码和生成带logo的二维码
欢迎来到风的博客
今天讲的是如何引用google的zxing库实现扫描二维码和生成带logo的二维码,源码库可以从github上下载[https://github.com/zxing/zxing];在文章结尾也会分享我的Demo
喜欢请关注我[http://myfengnull.github.io/]
扫描二维码
Intent startScan = new Intent(MainActivity.this,CaptureActivity.class);startActivity(startScan);
生成不带logo的二维码
String in = input.getText().toString();if (in.equals("")) {Toast.makeText(MainActivity.this, "请输入文本", Toast.LENGTH_SHORT).show();}try {//TODO 也可以生成二维码
// Bitmap qrcod = EncodingHandler.createQRCode(in, 400);
// img.setImageBitmap(qrcod);// 写入数据信息到图片int width = 400, height = 400;QRCodeWriter writer = new QRCodeWriter();//把内容编码BitMatrix matrix = writer.encode(in, BarcodeFormat.QR_CODE, width, height);int ms[] = new int[width * height];//变换赋值for (int y = 0; y < height; y++) {for (int x = 0; x < width; x++) {if (matrix.get(x, y)) {//黑点ms[y * width + x] = 0xff000000;} else {//白点ms[y * width + x] = 0xffffffff;}}}//TODO 缓存Bitmap image = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);image.setPixels(ms, 0, width, 0, 0, width, height);//TODO 展示图片img.setImageBitmap(image);FileOutputStream out = new FileOutputStream("/sdcard/code2.png");//TODO 压缩image.compress(Bitmap.CompressFormat.PNG, 100, out);Log.e("MMMM", "创建成功");} catch (WriterException e) {e.printStackTrace();} catch (FileNotFoundException e) {e.printStackTrace();}}
带logo的二维码
//Todo 带logo的二维码@Overridepublic void onClick(View v) {String in = input.getText().toString();if (in.equals("")) {Toast.makeText(MainActivity.this, "请输入文本", Toast.LENGTH_SHORT).show();}try {// 写入数据信息到图片int width = 400, height = 400;QRCodeWriter writer = new QRCodeWriter();//把内容编码BitMatrix matrix = writer.encode(in, BarcodeFormat.QR_CODE, width, height);int ms[] = new int[width * height];//变换赋值for (int y = 0; y < height; y++) {for (int x = 0; x < width; x++) {if (matrix.get(x, y)) {//黑点ms[y * width + x] = 0xff000000;} else {//白点ms[y * width + x] = 0xffffffff;}}}//TODO 缓存Bitmap image = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);image.setPixels(ms, 0, width, 0, 0, width, height);//logo地址Bitmap logo = BitmapFactory.decodeFile("/sdcard/gur03.png");image = insertLogo(image, logo);//TODO 展示图片img.setImageBitmap(image);//存储生成的二维码地址FileOutputStream out = new FileOutputStream("/sdcard/code2.png");//TODO 压缩image.compress(Bitmap.CompressFormat.PNG, 100, out);Log.e("MMMM", "创建成功");} catch (WriterException e) {e.printStackTrace();} catch (FileNotFoundException e) {e.printStackTrace();}}public Bitmap insertLogo(Bitmap src, Bitmap logo) {// 获取到两张图片的宽高int width = src.getWidth();int height = src.getHeight();int gwidth = logo.getWidth();int gheight = logo.getHeight();// 大小图片的比例float scale = width * 1.0f / 5 / gwidth;// 工作缓冲区Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);// 获取缓冲区的画布Canvas ca = new Canvas(bitmap);// 话大图片ca.drawBitmap(src, 0, 0, null);ca.scale(scale, scale, width / 2, height / 2);// 话小图片ca.drawBitmap(logo, (width - gwidth) / 2, (height - gheight) / 2, null);// 保存所画内容ca.save(Canvas.ALL_SAVE_FLAG);// 还原画布ca.restore();return bitmap;}
注意利用画布将图片覆盖在生成的二维码上,图片是30*30的,
原理是二维码中间有可以忽略的阴影
app引用BarCodeTest类库
Demo下载地址:https://github.com/MyfengNull/QrCode
本文原创下载请注明出处
实现扫描二维码和生成带logo的二维码相关推荐
- Android Studio 扫描识别二维码(包含闪光灯和本地二维码)、生成二维码、生成带logo的二维码
一.测试如下: 1.扫描识别二维码,扫描结果多少 2.生成二维码.生成带logo的二维码 二.添加依赖: 1.在Project的build.gradle中添加maven { url 'https:// ...
- asp.net 后台生成二维码及生成带logo的二维码
asp.net 后台生成二维码及生成带logo的二维码,此处将生成二维码和带Logo的二维码写在一起的,需要自己区分一下. 直接上代码 using System; using System.Colle ...
- Android Studio 生成二维码、生成带logo的二维码
1.生成二维码: 2.生成logo的二维码: 一.引入依赖 首先在libs文件目录下放进jar包zxing.jar,要下载zxing.jar就点击链接:下载zxing.jar(记得点击"Cd ...
- iOS 生成带 logo 的二维码,区域截屏保存至相册(小功能二连发 (一))
原文链接:http://www.jianshu.com/p/36e9f012ef39 生成带 logo 的二维码 区域截屏相关 -- 由3033分享 开篇 最近项目需要搞了几个相对独立的小功能,今天有 ...
- zxing生成带logo的二维码
倒Zxing依赖 implementation 'cn.bingoogolapple:bga-qrcode-zxing:1.2.1' 代码段 import android.graphics.Bitma ...
- 使用zxing生成带logo的二维码图片,自动调节logo图片相对二维码图片的大小
使用zxing生成带logo的二维码图片,自动调节logo图片相对二维码图片的大小 * 可选是否带logo,可选是否保存二维码图片:结果返回base64编码的图片数据字符串 * 页面显示:< ...
- JAVA使用barcode4j生成条形码和二维码图片以及带logo的二维码,验证码图片
二维码 1.Maven引入barcode4j依赖 <!-- 条形码生成 --><dependency><groupId>net.sf.barcode4j</g ...
- vue 生成带logo的二维码 qrcode-vue 支持下载图片 实例详解
最近的项目上有个需求,生成带logo的二维码,网上大部分都是基于JQ插件jQuery.qrcode.对于vue项目并不适用,翻阅了大量资料后,我找到了qrcode-vue这款基于vue的生成二维码的插 ...
- Golang使用qrcode生成二维码,以及生成带logo的二维码
添加并引用依赖 go get github.com/boombuler/barcodeimport ("github.com/skip2/go-qrcode" ) 1.生成字节形式 ...
最新文章
- 怎么查看和修改 MySQL 的最大连接数?
- parallel-comparator-200-攻防世界-逆向(简单易懂)
- Vue中进行断点调试的两种方式(使用外部浏览器和VsCode的 Debug for Chrome插件)
- java 判断一个字符串是否由数字组成的_Java中怎样判断一个字符串是否是数字
- ASP游戏工作室网站源码v1.0
- leetcode —— 1217. 玩筹码
- 数据结构之栈的应用(算术计算)
- 线性表:5.约瑟夫环,循环链表及其C语言实现
- Java中String连接性能的分析
- Android中RelativeLayout及TableLayout使用说明
- 哪款投影仪做家庭影院效果好?家用投影仪哪个好
- C#装箱(Boxing)和拆箱(Unboxing)
- OpenCV用FAST、SURF、SIFT、BRISK、ORB等进行特征点提取与匹配
- ESXI虚拟机搭建华三vFW2000虚拟防火墙
- 计算机条件函数ppt,EXCEL常用函数教程PPT讲课课件_计算机硬件及应用_IT/计算机_资料(2)...
- JAVA基础加强篇09——IO流
- android智能电灯,X-Light智能灯泡
- php中car是什么意思,car是什么意思_car在线翻译_英语_读音_用法_例句_海词词典
- python就业需要的技能_教你如何快速掌握Python就业技能
- 青蛙游戏 linux,小青蛙2048