【发布时间】:2021-01-16 20:24:13
【问题描述】:
我正在上传 image file(大小 368KB)并将其作为 64 位 数据 url 读取。数据 url 的大小为 501999 字节。当我现在在画布上绘制它并尝试查找画布的数据 url 的大小时,我得到的大小为 1091506 字节。
我可以期待在画布上绘制后会有所增加,但是将图像吹到两倍大小的图像非常奇怪。如果我使用230KB 左右的图像,图像会膨胀到其原始大小的 8-9 倍以上。但是,如果我使用50KB 左右的图像,大小的增加只是微不足道的。
什么原因?
Stackblitz 是 here
let uploadElement = document.getElementById('upload')
uploadElement.onchange = onImageChange;
function onImageChange(){
let inputFile = event.target.files[0];
let fileReader = new FileReader();
fileReader.onload = function(event){
let imageAsBase64 = event.target.result;
let initialSize = imageAsBase64.length;
console.log(initialSize);
const tempImage = new Image();// <HTMLImageElement>document.getElementById('test');
tempImage.src = imageAsBase64;
tempImage.onload = () => {
const element = document.createElement('canvas');
element.width = tempImage.width;
element.height = tempImage.height;
const ctx = element.getContext('2d');
ctx.drawImage(tempImage, 0, 0, element.width, element.height);
let endSize = element.toDataURL().length;
console.log(endSize);
}
}
fileReader.readAsDataURL(inputFile);
}
<input type="file" id="upload" name="image"/>
【问题讨论】:
标签: javascript html image ecmascript-6 html5-canvas