上传前在客户端压缩图像

有谁知道任何免费的脚本尽可能压缩JPG,GIF和PNG文件?

您可能可以使用canvas调整图像大小,并使用dataURI将其导出。 不知道有关压缩,但。

看看这个: 调整HTML5canvas中的图像大小

我刚刚开发了一个名为JIC的JavaScript库来解决这个问题。 它允许你压缩在客户端的jpg和PNG 100%与JavaScript和没有外部库的要求!

你可以在这里试试这个demo: http : //makeitsolutions.com/labs/jic ,在这里获取源代码: https : //github.com/brunobar79/JIC

希望你喜欢。

我在这里阅读了一个实验: http : //webreflection.blogspot.com/2010/12/100-client-side-image-resizing.html

理论上说,在上传之前,您可以使用canvas来调整客户端上的图像大小。 原型示例似乎只适用于最近的浏览器,虽然有趣的想法…

但是,我不确定使用canvas来压缩图像,但是您可以调整它们的大小。

我迟到了,但是这个解决scheme对我很有帮助。 基于这个库 ,你可以使用像这样的函数 – 设置图像,质量,最大宽度和输出格式(jepg,png):

 function compress(source_img_obj, quality, maxWidth, output_format){ var mime_type = "image/jpeg"; if(typeof output_format !== "undefined" && output_format=="png"){ mime_type = "image/png"; } maxWidth = maxWidth || 1000; var natW = source_img_obj.naturalWidth; var natH = source_img_obj.naturalHeight; var ratio = natH / natW; if (natW > maxWidth) { natW = maxWidth; natH = ratio * maxWidth; } var cvs = document.createElement('canvas'); cvs.width = natW; cvs.height = natH; var ctx = cvs.getContext("2d").drawImage(source_img_obj, 0, 0, natW, natH); var newImageData = cvs.toDataURL(mime_type, quality/100); var result_image_obj = new Image(); result_image_obj.src = newImageData; return result_image_obj; } 

如果你正在寻找一个库来执行客户端的图像压缩,你可以检查: compress.js 。 这将基本上帮助你纯粹用JavaScript压缩多个图像,并将其转换为base64string。 您可以select以MB为单位设置最大尺寸,也可以设置首选的图像质量。