87,910
社区成员
发帖
与我相关
我的任务
分享
data:[<mediatype>][;base64],<data>
如:”data:image/png;base64,iVBORw0KGgoAAA…”
let img = new Image();
// 或者
// let img = document.createElement('img');
img.onload = function(){
let canvas = document.createElement('canvas'),
width = img.width,
height = img.height;
canvas.width = width;
canvas.height = height;
canvas.getContext('2d').drawImage(img, 0, 0, width, height);
console.log( canvas.toDataURL() );
// => "data:image/png;base64,iVBORw0KGgoAAA..."
};
// 因Image的src一旦赋值,便立即发起请求,故onload应写在src之前
img.src = '/path/to/target.png';
借助FileReader的readAsDataURL方法
fetch('/path/to/target.gif')
.then(respone => respone.blob()) // 将响应体转换成blob格式数据
.then(blob => {
let reader = new FileReader();
reader.onloadend = function(){
console.log(reader.result); // 输出DataURL数据
};
reader.readAsDataURL(blob); // 将blob数据转换成DataURL数据
})
.catch(console.error);
使用ajax
$.ajax('/path/to/target.gif', {
xhrFields: {
responseType: 'blob' // 指定响应数据类型为blob格式
}
})
.then(blob => {
let reader = new FileReader();
reader.onloadend = function(){
console.log(reader.result);
};
reader.readAsDataURL(blob);
})
.catch(console.error);
<input type="file" onchange="toDataURL(this)" />
<script type="text/javascript">
function toDataURL(el){
let reader = new FileReader();
reader.onloadend = function(){
console.log(reader.result);
};
reader.readAsDataURL(el.files[0]); // el.files[0]为选中的文件
}
</script>