我将在react原生中将b64转换为blob。
但是我在atob函数上遇到了错误。
这是我的代码。
var binary = atob(this.state.avatarSource.uri.split(',')[1]);
var byteNumbers = new Array(binary.length);
for(var i = 0; i < binary.length; i++) {
byteNumbers.push(binary.charCodeAt(i));
}
var file = new Blob([new Uint8Array(byteNumbers)], {type: 'image/jpeg'});有谁知道吗?
发布于 2016-07-25 11:11:42
不要使用atob或btoa,它们只在Debug Mode中有效。
因为当您使用调试模式时,您是在浏览器中运行JS代码(应该是V8),而如果您要在生产模式下运行应用程序,则它使用的是没有atob或btoa实现的JavascriptCore。
您可以使用base-64将数据转换为BASE64编码的字符串,但我不确定它是否能为您创建正确的Blob对象。
据我所知,Blob是JS上下文和文件系统之间的桥梁,React Native本身还没有文件系统API,因此你可能会得到一个Blob对象,但它总是空的。
如果你打算从包含数字的数组中创建一个图像,你可以看看react-native-fetch-blob,这是我正在做的一个项目,希望它能解决这类问题:)
发布于 2016-07-08 21:44:40
我正在得到一幅图像的64进制。之后,我将从下面的代码中显示它。希望能对你有所帮助
let imgSrc = "data:image/png;base64," + base64ImageData;
<Image source={{uri: imgSrc, scale: 1}} style={{ height: 80, width: 80}}/>发布于 2021-02-21 03:54:00
你可以试试fetch
let blob = await this.base64ToBlob(encoded);
console.log('btoB64 resp === ', blob);
async base64ToBlob(encoded) {
let url = `data:image/jpg;base64,${encoded}`;
let res = await fetch(url);
let blob = await res?.blob();
return blob;
}https://stackoverflow.com/questions/36698716
复制相似问题