Android zxing 二维码 bitmap存到本地,解决图片一片黑问题
发布日期:2021-06-28 16:42:40 浏览次数:2 分类:技术文章

本文共 1553 字,大约阅读时间需要 5 分钟。

未经本人授权,不得转载!否则必将维权到底

导语:

最近项目有个需求,需要用zxing生成二维码,并且将生成的二维码保存到本地相册。生成二维码并没有出现问题,但是将二维码保存到本地相册时,发现保存的图片一片漆黑。为了解决这个问题也花了点时间,觉得有必要记录下来,利人利己。

在ImageView里面看的时候是正常的:

图例1.png

保存到了本地相册竟然变成了一张纯黑色的图片,里面并不是二维码图片。

图例2.jpg

先来看下创建二维码的代码:

/**   * 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 {      Hashtable
hints = 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,代码如下:

图例3.png

结束语:

开发中遇到Bug是不可避免的,但是有些Bug真的是遇到一次以后再也不用担心了。写下这篇博客,当别人遇到这个问题的时候能快速解决,这就是我的初衷。


本文原创发布于微信公众号「keithxiaoy」,编程、思维、成长、正能量,关注并回复「编程」、「阅读」、「Java」、「Python」等关键字获取免费学习资料

不要给自己的人生设限

转载地址:https://blog.csdn.net/XiaoY_yan/article/details/80938916 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Android AlertDialog/AlertDialog.builder 以及自定义AlertDialog方法
下一篇:Android开发小技巧 --靠别手动删除假数据,解放你的双手

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月04日 08时52分01秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章