【问题标题】:React Native base64 Image to Uint8ClampedArray将本机 base64 图像反应为 Uint8ClampedArray
【发布时间】:2020-07-13 04:01:15
【问题描述】:

我有从 AndroidiOSreact-native 的 CameraRoll 中选择 QRcode 图像的功能一旦用户选择了图像。我将使用jsQR 之类的东西对其进行解码并验证它是否是真正的二维码。

但是在 jsQR 库上,他们说他们需要接受 Uint8ClampedArray 来解码图像并读取 qr。所以我已经有了获取base64图像的功能。但找不到如何将其正确转换为 Uint8ClampedArray

下面是我的代码:

const handleImportScan = useCallback(async () => {
    try {
      const base64Image = await RNFS.readFile(
        photos[selected].node.image.uri,
        'base64',
      );
      console.log('base64img:', base64Image);
      // First argument below should be a 'Uint8ClampedArray'
      const code = jsQR(base64Image, width, height);
      if (code) {
        console.log('Found QR code', code);
      }
    } catch (error) {
      console.log('err:', error);
    }
  }, [photos, selected]);

我正在尝试寻找 第三方 将我的 base64 图像转换为 Uint8ClampedArray

我主要使用 PNG 保存用户 qr 生成图像。

如果有人可以提供帮助,我们将不胜感激。 谢谢

【问题讨论】:

    标签: image react-native base64 qr-code uint8t


    【解决方案1】:

    请注意,base64data 应该是 base64 编码的图像,而不是 uri。 (例如,没有 'data:image/png;base64,',如果你有 uri)

    const byteCharacters = atob(base64data);
    const byteNumbers = new Array(byteCharacters.length);
    for (let i = 0; i < byteCharacters.length; i++) {
        byteNumbers[i] = byteCharacters.charCodeAt(i);
    }
    const byteArray = new Uint8ClampedArray(byteNumbers);
    

    【讨论】:

      猜你喜欢
      • 2021-09-04
      • 2019-12-04
      • 1970-01-01
      • 2021-06-19
      • 2019-01-27
      • 1970-01-01
      • 2021-08-16
      • 2018-07-09
      相关资源
      最近更新 更多