Javascript 客户端 JPEG 图像压缩

标签 javascript image compression

我想基本上压缩上传的图像(客户端),然后将 src 附加到我的 id(html)。函数代码如下:

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]);
    }
}

这应该可以正常工作,但发生的是处理后上传的图像似乎是一个黑框。现在我已经阅读了很多类似的问题,但是关于压缩我无法解决这个问题。这也适用于小于 500 Kb 的文件(jpeg 图像),但对于 1 MB 以上的真实文件,它会提供一个黑框作为数据 uri。如果有人可以帮助我,那就太好了。

谢谢, 外婆

最佳答案

toDataURL 的使用有大小限制,请参阅 canvas.toDataURL() for large canvas对于类似的问题,以及服务器端代码的可能答案。

如果您受限于此客户端代码,则必须在使用 toDataURL 之前减小图像的大小。

关于Javascript 客户端 JPEG 图像压缩,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34974980/

相关文章:

image - imshow 更新的问题

html - img 没有反应

java - 如何在内存中创建日历图像以添加到 PDF?

java - 在没有文件 I/O 的情况下用 Java 压缩内容

delphi - Delphi 2009 中的 Zlib

javascript - Jest 手动模拟需要新实例的包

javascript - 存储用户输入的值

algorithm - 简单来说,压缩通常是如何实现的?

javascript - 是否有可能在木瓜 Dicom 查看器中查看 jpeg 图像?

javascript - Typescript 将响应类型转换为类