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

FineUploader.js how to conditionally rescale and compress images?

这个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
  }
}

我不知道 fine-uploader 是否内置了 jpeg 压缩功能(或者它是否只是重新缩放),如果没有,那么也许 J-I-C 可以使用。

如果这个条件缩放和压缩可以用fine-uploader来完成,应该怎么做呢?如果不是,我还应该考虑哪些其他途径?

如果您想 "conditionally" 缩放图像,您将需要使用 scaleImage API method.

自行实现此逻辑
  1. 构造一个Fine Uploader实例。不包括 scaling options.
  2. 贡献一个onSubmitted callback handler. There, you can check the file using the getFile API method,并用它来确定文件是否应该缩放。
  3. 如果文件需要缩放,使用scaleImage创建缩放后的Blob,然后通过addFiles API method将缩放后的Blob提交给Fine Uploader。