Android zxing 二维码 bitmap存到本地,解决图片一片黑问题
发布日期:2021-06-28 16:42:40
浏览次数:2
分类:技术文章
本文共 1553 字,大约阅读时间需要 5 分钟。
未经本人授权,不得转载!否则必将维权到底
导语:
最近项目有个需求,需要用zxing生成二维码,并且将生成的二维码保存到本地相册。生成二维码并没有出现问题,但是将二维码保存到本地相册时,发现保存的图片一片漆黑。为了解决这个问题也花了点时间,觉得有必要记录下来,利人利己。
在ImageView里面看的时候是正常的:
保存到了本地相册竟然变成了一张纯黑色的图片,里面并不是二维码图片。
先来看下创建二维码的代码:
/** * Created by KeithXiaoY on 2016/7/27. * 生成一个二维码图像 * * @param url * 传入的字符串,通常是一个URL * @param widthAndHeight * 图像的宽高 * @return */private static final int BLACK = 0xff000000;private static final int WHITE = 0xffffffff;public static Bitmap createQRCode(String str, int widthAndHeight) throws WriterException { Hashtablehints = new Hashtable (); hints.put(EncodeHintType.CHARACTER_SET, "utf-8"); BitMatrix matrix = new MultiFormatWriter().encode(str,BarcodeFormat.QR_CODE, widthAndHeight, widthAndHeight); int width = matrix.getWidth(); int height = matrix.getHeight(); int[] pixels = new int[width * height]; for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) { if (matrix.get(x, y)) { pixels[y * width + x] = BLACK; } } } Bitmap bitmap = Bitmap.createBitmap(width, height,Bitmap.Config.ARGB_8888); bitmap.setPixels(pixels, 0, width, 0, 0, width, height); return bitmap;}
最后找到bug的原因了:
在ImageView中显示正常,是因为ImageView中没有颜色的位置默认使用的是白色的替代的,但是保存成png后,没有颜色的位置使用的是黑色替代的,所以会看到生成的图片是全黑的。
一行代码就搞定了这个bug,代码如下:
结束语:
开发中遇到Bug是不可避免的,但是有些Bug真的是遇到一次以后再也不用担心了。写下这篇博客,当别人遇到这个问题的时候能快速解决,这就是我的初衷。
本文原创发布于微信公众号「keithxiaoy」,编程、思维、成长、正能量,关注并回复「编程」、「阅读」、「Java」、「Python」等关键字获取免费学习资料
转载地址:https://blog.csdn.net/XiaoY_yan/article/details/80938916 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月04日 08时52分01秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
springboot多环境加载yml和logback配置
2019-04-29
几道简单的算法题(来自leetcode)
2019-04-29
推一波JAVA学习公众号
2019-04-29
org.apache.ibatis.reflection.ReflectionException: Error instantiating class with invalid types
2019-04-29
HttpsURLConnection 返回 400
2019-04-29
python基础语法05
2019-04-29
Linux基础01
2019-04-29
工作总结04-脚本
2019-04-29
01-MYSQL8环境搭建
2019-04-29
02-初始数据库
2019-04-29
03-基础查询和排序
2019-04-29
升职加薪必看!读完我这份《Android开发核心源码精编解析》面试至少多要3K!附答案
2019-04-29
华为架构师深入讲解Android开发!为什么Flutter能最好地改变移动开发?吐血整理
2019-04-29
基于安卓的兼职app开发!万字长文轻松彻底入门Flutter,终获offer
2019-04-29
大牛深入讲解!算法题+JVM+自定义View,大厂内部资料
2019-04-29