首页 > 其他分享 >Android 二维码相关(二)

Android 二维码相关(二)

时间:2024-03-08 13:55:28浏览次数:17  
标签:srcBitmap int height width 二维码 new 相关 Android BinaryBitmap

Android 二维码相关(二)

本篇文章继续讲述下如何使用zxing解析二维码图片,获取内容.

1: 创建RGBLuminanceSource对象.

首先获取二维码图片的bitmap对象.

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.test);

根据getPixels()获取位图指定区域的像素颜色值.

int width = srcBitmap.getWidth();
int height = srcBitmap.getHeight();
int[] pixels = new int[width * height];
bitmap.getPixels(pixels, 0, width, 0, 0, width, height);

//使用pixels数组创建RGBLuminanceSource对象

RGBLuminanceSource rgbLuminanceSource = new RGBLuminanceSource(width, height, pixels);

2: 获取BinaryBitmap对象

BinaryBitmap binaryBitmap = new BinaryBitmap(new HybridBinarizer(rgbLuminanceSource));

BinaryBitmap类的主要作用是为解码器提供一个可读取的二进制图像。

解码器可以使用BinaryBitmap来解码包含在图像中的条形码或二维码。

3: 创建解码器

MultiFormatReader类是ZXing库中的核心类之一,它可以识别和解码多种不同类型的条码和二维码.

MultiFormatReader multiFormatReader = new MultiFormatReader();

4: 解码

try {
    Result decode = multiFormatReader.decode(binaryBitmap);
    String text = decode.getText();
    return text;
} catch (Throwable e) {
    Log.e(TAG, "decodeBitmap: ", e);
}

完整的代码如下:

/**
     * @param srcBitmap 二维码图片
     * @return 文案
     */
    public static String decodeBitmap(Bitmap srcBitmap) {
        if (srcBitmap == null) return "";

        int width = srcBitmap.getWidth();
        int height = srcBitmap.getHeight();
        int[] pixels = new int[width * height];
        srcBitmap.getPixels(pixels, 0, width, 0, 0, width, height);
        //使用Bitmap对象创建RGBLuminanceSource对象,该对象将被传递给zxing库进行识别
        RGBLuminanceSource rgbLuminanceSource = new RGBLuminanceSource(width, height, pixels);

		//BinaryBitmap类的主要作用是为解码器提供一个可读取的二进制图像。解码器可以使用BinaryBitmap来解码包含在图像中的条形码或二维码。
        BinaryBitmap binaryBitmap = new BinaryBitmap(new HybridBinarizer(rgbLuminanceSource));

        MultiFormatReader multiFormatReader = new MultiFormatReader();
        try {
            Result decode = multiFormatReader.decode(binaryBitmap);
            String text = decode.getText();
            return text;
        } catch (Throwable e) {
            Log.e(TAG, "decodeBitmap: ", e);
        }
        return "";
    }

本文由博客一文多发平台 OpenWrite 发布!

标签:srcBitmap,int,height,width,二维码,new,相关,Android,BinaryBitmap
From: https://www.cnblogs.com/zhjing/p/18060821

相关文章

  • FFU、WIM、ESD、VHD和VHDX都是与Windows操作系统部署、备份和虚拟化相关的文件格式。
    FFU(FullFlashUpdate)文件格式是微软开发的,用于在Windows设备上进行固件更新和完整系统部署的一种映像文件格式。FFU文件包含了设备的完整磁盘映像,包括所有分区、文件系统和数据。这种格式允许精确复制存储设备的内容,提供了一种高效且可靠的方式来恢复、更新或部署设备。下面是对F......
  • MySQL查询优化方案汇总(索引相关)
    索引相关类型隐式转换大坑**字段filed1是varchar类型,且加了索引,如果wherefiled1=123;type可能是all,因为123是数字类型,mysql内部会用函数做隐式转换,用了函数,索引就失效了。**大数据深度分页,用主键selectfield1,field2fromtablelimit100000,10;selectfield1,fiel......
  • Android 二维码相关(一)
    Android二维码相关(一)本篇文章主要记录下android下使用zxing来创建二维码.1:导入依赖api"com.google.zxing:core:3.5.1"2:创建二维码创建QRCodeWriter对象QRCodeWriterqrCodeWriter=newQRCodeWriter(); 将文本内容转换成BitMatrixBitMatrixencode=qrCod......
  • 解决 Android studio Connect to 127.0.0.1:[/127.0.0.1] failed: Connection refused
    前言由于代理变更,androidstudio会有一系列报错,其中一个是Connectto127.0.0.1:xxxxxx[/127.0.0.1]failed:Connectionrefused网上答案大都太片面了,无法完全解决问题,这里列举出四个可能的原因,希望对大家有用问题如下建议一下四种方案都尝试下,我相信总有一种能......
  • 前端水印相关解析
    一、问题背景为了防止信息泄露或知识产权被侵犯,在web的世界里,对于页面和图片等增加水印处理是十分有必要的,水印的添加根据环境可以分为两大类,前端浏览器环境添加和后端服务环境添加,根据可见性,网页水印可以分为可见水印和不可见水印(盲水印/隐水印),简单对比一下这两种方式的特点:前......
  • 对于core-js相关的报错 core-js/modules/es.array.push.js in ./node_modules/.store
    Thesedependencieswerenotfound:*core-js/modules/es.array.push.jsin./node_modules/.store/@[email protected]/node_modules/@babel/runtime/helpers/construct.js,./node_modules/.store/@[email protected]/node_modules/@babel/runtime/helpers/esm/obj......
  • Android mount: bad /etc/fstab: No such file or directory
    没有root权限的原因,需要su切换到root用户https://github.com/termux/termux-packages/issues/7256 I/OerrorRMX1901CN:/#mount/dev/block/by-name/abl/mnt/mntablmount:'/dev/block/by-name/abl'->'/mnt/mntabl':I/Oerrorablxbl都会出现I/Oerror,不知道什么原因......
  • 华企盾DSC的屏幕浮水印可以设置哪些相关法律话术?
    华企盾DSC防泄密系统的屏幕浮水印和进程浮水印能够设置相关法律话术作为水印内容,以增加警示作用。具体的法律话术设置并未给出直接的示例,但理论上可以设定涉及数据保密、著作权声明、适当的法律责任警告等任何合法、合规的法律性内容。例如: "本计算机受到公司数据保密政策......
  • Android hexedit toybox tcsetattr /dev/pts/0: Permission denied
    cas:/$/data/local/tmp/toybox-aarch64hexedit/data/local/tmp/tree.statichexedit:tcsetattr/dev/pts/0:Permissiondenied 好像是不能用tcsetattr,selinux会拒绝 cas:/$ls-l/dev/ptsls:/dev/pts:Permissiondenied https://blog.zhanghai.me/fixing-line-e......
  • 第三节:队列相关(滑动窗口最大值、)
    一.        二.        三.         !作       者:Yaopengfei(姚鹏飞)博客地址:http://www.cnblogs.com/yaopengfei/声     明1:如有错误,欢迎讨论,请勿谩骂^_^。声     明2:原创博客请在转载......