FineUploader.js如何有条件地重新缩放和压缩图像?

时间:2016-06-07 15:31:18

标签: image-uploading fine-uploader

part of the documentation与我想做的事情有关,但它看起来很难编码:

var uploader = new qq.FineUploader({
    ...
    scaling: {
        sizes: [
            {name: "small", maxSize: 100},
            {name: "medium", maxSize: 300}
        ]
    }
});

我希望有条件地对已经没有被用户压缩的图像进行重新缩放。

这是我想要完成的一些伪代码:

if ((filesize < 1 megabytes) and (image.width*image.height > 1 megapixels)) {
  Keep the original image without manipulating it in any way
} else {
  Rescale image longest side to maximum of 1600 pixels
  Compress the image to 60% quality
  if (filesize still > 1mb) {
    Keep compressing with more jpeg until it's under 800kb
  }
}

我不知道精细上传器是否具有内置的jpeg压缩功能(或者如果它只是重​​新缩放),如果没有,那么可能会使用J-I-C

如果使用精细上传器完成这种条件重新缩放和压缩,应该怎么做?如果没有,我应该考虑哪些其他途径?

1 个答案:

答案 0 :(得分:1)

如果您想“有条件地”缩放图像,则需要使用scaleImage API method自行实现此逻辑。

  1. 构建一个Fine Uploader实例。不要包含scaling options
  2. 投放onSubmitted callback handler。在那里,您可以使用getFile API method检查文件,并使用它来确定是否应缩放文件。
  3. 如果要缩放文件,请使用Blob创建缩放scaleImage,然后通过addFiles API method将缩放后的Blob提交给Fine Uploader。