首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >要设置为Uint8ClampedArray的图像Base64字符串

要设置为Uint8ClampedArray的图像Base64字符串
EN

Stack Overflow用户
提问于 2018-08-21 20:15:21
回答 3查看 4.8K关注 0票数 6

我有从Expo ImagePicker component返回的base64格式的imagedata,我想将它转换成r0,g0,b0,a0,r1,g1,b1,a1等格式的RGBA像素值的Uint8ClampedArray,因为它是jsQR library唯一接受的输入

我试过了,但不起作用:

代码语言:javascript
复制
const dataURItoBlob = byteString  => {

  // write the bytes of the string to a typed array
  var ia = new Uint8ClampedArray(byteString.length);
  for (var i = 0; i < byteString.length; i++) {
    ia[i] = byteString.charCodeAt(i);
  }

  return ia;
};

我们将非常感谢您的帮助。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-09-09 04:24:53

我找到的解决方案如下:

需要使用typedarrayBufferjpeg-js

代码语言:javascript
复制
var Uint8ClampedArray = require('typedarray').Uint8ClampedArray;
const Buffer = require('buffer').Buffer;
global.Buffer = Buffer; // very important
const jpeg = require('jpeg-js');


const jpegData = Buffer.from(base64, 'base64');
var rawImageData = jpeg.decode(jpegData);

var clampedArray = new Uint8ClampedArray(rawImageData.data.length);
// manually fill Uint8ClampedArray, cause Uint8ClampedArray.from function is not available in react-native
var i;
for (i = 0; i < rawImageData.data.length; i++) {
  clampedArray[i] = rawImageData.data[i];
}
票数 4
EN

Stack Overflow用户

发布于 2020-02-19 07:33:35

我猜您的base64编码的URI实际上是一个PNG,所以您可以执行以下操作:

代码语言:javascript
复制
const {PNG} = require('pngjs');
const jsqr = require('jsqr');

const dataUri = 'data:image/png;base64,ABCDEFYOURIMAGEHEREABCDEF';
const png = PNG.sync.read(Buffer.from(dataUri.slice('data:image/png;base64,'.length), 'base64'));
const code = jsqr(Uint8ClampedArray.from(png.data), png.width, png.height);

// code.data now contains the URL string encoded by the QR code
票数 5
EN

Stack Overflow用户

发布于 2018-08-21 20:48:10

react native的新答案:

这个包应该可以做到这一点。如果它起作用了,请告诉我。

https://www.npmjs.com/package/get-image-data

用于浏览器的旧浏览器:

首先将base64 img放在画布中,如下所示:

Base64 PNG data to HTML5 canvas

然后在canvas上应用ImageData (https://developer.mozilla.org/en-US/docs/Web/API/ImageData)

这应该会给你想要的结果。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51948472

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档