chrome/ff中带有createObjectURL的对象URL的数据URI
Data URI to Object URL with createObjectURL in chrome/ff
我有一个图像的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。
试试这个代码。
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'));
如果您想在iframe中显示html,会发生什么?
iframe.src = "data:text/html,"+encodeURIComponent( window.btoa(text) );
如果有人想将数据URI保存为服务器中的映像:
通过邮寄请求将数据URI传递到服务器:
var imgData = canvas.toDataURL('image/png');
$.post("https://path-to-your-script/capture.php", {image: imgData},
function(data) {
console.log('posted');
});
保存图像:capture.php
$data = $_POST['image'];
// remove "data:image/png;base64," from image data.
$data = str_replace("data:image/png;base64,", "", $data);
// save to file
file_put_contents("/tmp/image.png", base64_decode($data));
相关文章:
- 在URL中传递JS对象
- 遍历 JSON 对象并检查 URL 是否以某个值结尾
- 如何仅在对象URL's已下载
- Mapbox JS,来自URL的GeoJSON featureCollection对象只添加了一个标记
- Android上的Chrome无法播放来自对象URL的录制音频
- 读取在具有IE的工作程序中生成的对象URL
- 将URL字符串${userid}替换为javascript对象中的实际用户id
- 如何使用 Backbone 读取通过同一 REST URL 返回的两个不同对象
- 我的 AJAX 请求对象无法正确解析 URL 的协议部分
- 向jQueryajax调用添加参数,最好添加到URL或对象中
- 从url对对象进行角度编码和解码
- 如何使用API URL的JSON.parse将JSON字符串更改为Javascript对象
- 如何从每个对象获取jQuery的“title”和“url”值
- 如何用php url返回的JSON对象填充表
- 如何从JSON对象部分获取URL
- 将模型/对象放在Http Get-URL上
- 将参数传递给 BLOB 对象 URL
- chrome/ff中带有createObjectURL的对象URL的数据URI
- 为什么我的AJAX文件下载,使用基于Blob的对象url,破坏文件
- 类似于对象URL的方式在Chrome for Android中播放本地音频文件