med*_*zid 2 jquery jquery-file-upload
正在使用jquery 文件上传插件直接上传到 s3,我试图在上传之前压缩图像,我已经尝试了该选项imageQuality: 0.8
fileInput.fileupload({
fileInput: fileInput,
url: my_url
type: 'POST',
paramName: 'file',
dataType: 'XML',
replaceFileInput: false,
acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i
maxFileSize: 999000,
imageQuality: 0.8,
// .....
})
Run Code Online (Sandbox Code Playgroud)
但是上传后图像大小不会被压缩
我不确定这imageQuality
是正确的事情,但我也愿意接受任何其他选择:
例如:我还创建了自己的函数来压缩图像,该函数返回图像 Blob,我只是不知道如何告诉JQuery 文件上传使用该 Blob 而不是输入文件中的图像
我将在找到解决方案后回答我的问题,希望这对将来的某人有所帮助:
要使用 jquery 文件上传压缩图像有两种解决方案,要么使用插件提供的压缩,要么创建自己的压缩函数并将其与 jquery 文件上传一起使用,我最终使用了第二种解决方案
第一个解决方案:
我偶然发现的是这个链接:https : //github.com/blueimp/jQuery-File-Upload/wiki/Client-side-Image-Resizing
所以你需要做的基本上是在你的项目中导入以下文件: jquery.js, jquery.ui.widget.js, load-image.all.min.js, canvas-to-blob.min.js, jquery.iframe-transport.js, jquery.fileupload.js, jquery.fileupload-process.js, jquery.fileupload-image.js
然后查看 jQuery File upload 的选项,我找到了选项imageQuality,阅读它,它说:
imageQuality:设置保存调整大小的图像时提供给 canvas.toBlob() 调用的质量参数。
因此,似乎imageQuality选项仅在调整图像大小时才起作用,但在我的情况下,我不需要调整图像大小,但您可以使用另一个选项imageForceResize,通过组合这两个选项,您可以使压缩工作,但是需要第三个选项disableImageResize,该选项默认设置为 true ,因此我们需要将其设置为 false 以允许调整图像大小。
最终代码如下所示:
$('#file_input').fileupload({
# these 3 options are necessary together for compressing
disableImageResize: false,
imageForceResize: true,
imageQuality: 0.7,
// ......
})
Run Code Online (Sandbox Code Playgroud)
对于第二种解决方案:
如果您想使用自己的压缩功能,我认为这是最好的方法,那么在这种情况下,您只需要 jquery.js, jquery.ui.widget.js, jquery.fileupload.js
Jquery 文件上传data.files
在提交之前存储要上传的文件,所以你要做的是有一个函数来压缩图像并返回一个 blob 数组,然后覆盖data.files
$('#file_input').fileupload({
add: function(e, data){
// .......
data.files = compress_images_function()
data.submit()
}
})
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4646 次 |
最近记录: |