【发布时间】:2012-02-22 02:43:37
【问题描述】:
我有一张图片的 base64 字符串。如何将其转换为对象 URL?目的是通过将 Blob URL 注入 DOM 而不是非常大的 base64 字符串来尝试查看我的 svg 编辑器是否会更快。这仅用于编辑 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。
【问题讨论】:
-
只是好奇您是否能够从中获得更好的性能?当我有太多数据 url 时,我也会遇到问题,我想知道将它们保留为对象 url 是否会更好。
标签: javascript html