【问题标题】:How to create a BinaryBitmap from ImageProxy?如何从 ImageProxy 创建 BinaryBitmap?
【发布时间】:2022-12-05 20:34:22
【问题描述】:

Mlkit 条码扫描库在扫描 Code 39 条码时存在问题。所以只好换成貌似没有问题的zxing库。

但是 CameraX 返回一个 ImageProxy 对象,而 zxing MultiFormatReader 接受一个 BinaryBitmap 对象。

我在从一个转换到另一个时遇到问题,它给了我一个索引越界异常。这是我的代码:

private fun createBinaryBitmap(imageProxy: ImageProxy): BinaryBitmap {
        val data = ImageUtil.yuvImageToJpegByteArray(imageProxy, imageProxy.cropRect, 100)

        val source = PlanarYUVLuminanceSource(
            data,
            imageProxy.width,
            imageProxy.height,
            0,
            0,
            imageProxy.width,
            imageProxy.height,
            false
        )
        return BinaryBitmap(HybridBinarizer(source))
    }

我看过其他地方和问题,但老实说我找不到正确的方法。

【问题讨论】:

    标签: android zxing barcode-scanner android-camerax google-mlkit


    【解决方案1】:

    这是我在 zxing 文档中找到的内容。参数 dataWidth 和 dataHeight 分别与 imageProxy.width 和 imageProxy.height 不同,因为数据是 imageProxy 的裁剪图像。

    public PlanarYUVLuminanceSource(byte[] yuvData,
                                        int dataWidth,
                                        int dataHeight,
                                        int left,
                                        int top,
                                        int width,
                                        int height,
                                        boolean reverseHorizontal)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-30
      相关资源
      最近更新 更多