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.
自行实现此逻辑
- 构造一个Fine Uploader实例。不包括
scaling
options.
- 贡献一个
onSubmitted
callback handler. There, you can check the file using the getFile
API method,并用它来确定文件是否应该缩放。
- 如果文件需要缩放,使用
scaleImage
创建缩放后的Blob
,然后通过addFiles
API method将缩放后的Blob
提交给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
}
}
我不知道 fine-uploader 是否内置了 jpeg 压缩功能(或者它是否只是重新缩放),如果没有,那么也许 J-I-C 可以使用。
如果这个条件缩放和压缩可以用fine-uploader来完成,应该怎么做呢?如果不是,我还应该考虑哪些其他途径?
如果您想 "conditionally" 缩放图像,您将需要使用 scaleImage
API method.
- 构造一个Fine Uploader实例。不包括
scaling
options. - 贡献一个
onSubmitted
callback handler. There, you can check the file using thegetFile
API method,并用它来确定文件是否应该缩放。 - 如果文件需要缩放,使用
scaleImage
创建缩放后的Blob
,然后通过addFiles
API method将缩放后的Blob
提交给Fine Uploader。