我希望能够压缩上传的图片(客户端),然后将其src附加到我的html id上。以下是该函数的代码:
function readURL(input) {
if (input.files && input.files[0]) {
var reader = new FileReader();
reader.onload = function (e) {
console.log("e.target.result",e.target.result);
var imageEle = new Image();
imageEle.src = e.target.result;
imageEle.onload = function() {
var cvs = document.createElement('canvas');
cvs.width = imageEle.naturalWidth;
cvs.height = imageEle.naturalHeight;
var ctx = cvs.getContext("2d").drawImage(imageEle,0,0);
var newImageData = cvs.toDataURL('image/jpeg',0.5);
$('#uploadedImage').attr('src', newImageData);
};
};
reader.readAsDataURL(input.files[0]);
}
}
这应该是可以正常工作的,但事实上处理后上传的图像似乎变成了黑色方块。我已经阅读了许多类似的问题,但与压缩相关的问题我无法解决。此外,对于真实的文件(JPEG 图像)小于 500 KB 的情况下效果不错,但对于超过 1 MB 的文件,会生成一个数据 URI 的黑盒子。如果有人能帮助我解决这个问题就太好了。
谢谢, Vaibhav
drawImage
指定一个尺寸,它会将图像缩小到该尺寸。 - IlyatoDataURL
。 - Ilya