gpt4 book ai didi

javascript - 在 chrome/ff 中使用 createObjectURL 将数据 URI 转换为对象 URL

转载 作者:搜寻专家 更新时间:2023-10-31 08:21:05 34 4
gpt4 key购买 nike

我有一张图片的 base64 字符串。如何将其转换为对象 URL?目的是通过向 DOM 注入(inject) Blob URL 而不是非常大的 base64 字符串来尝试查看我的 svg-editor 是否会更快。这仅用于编辑 SVG。保存时,对象 URL 将再次转换为 base64。

图像大小通常为 0.5 MB 或更大。

我尝试过的:

var img = ...; //svg <image>
var bb = new BlobBuilder();
var dataStr = img.getAttributeNS(XLINKNS, 'href'); //data:image/jpeg;base64,xxxxxx
//dataStr = dataStr.replace(/data:.+;base64,/i, ''); //Strip data: prefix - tried both with & without
//dataStr = window.atob(dataStr); //tried both with & without

bb.append(dataStr);
var blob = bb.getBlob
img.setAttributeNS(XLINKNS, 'xlink:href', window.URL.createObjectURL(blob)); //blob:xxx

我得到的是一张看似损坏的 jpeg 图像。

TIA。

最佳答案

试试这段代码。

function dataURItoBlob(dataURI) {
var mime = dataURI.split(',')[0].split(':')[1].split(';')[0];
var binary = atob(dataURI.split(',')[1]);
var array = [];
for (var i = 0; i < binary.length; i++) {
array.push(binary.charCodeAt(i));
}
return new Blob([new Uint8Array(array)], {type: mime});
}

然后像这样使用它

var objecturl = URL.createObjectURL(dataURItoBlob('your data url goes here'));

关于javascript - 在 chrome/ff 中使用 createObjectURL 将数据 URI 转换为对象 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9388412/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com