FineUploader 按一维缩放缩略图(即 maxHeight 或 maxWidth 而不是 maxSize)

FineUploader scale thumbnails by one dimension (i.e. maxHeight or maxWidth rather than maxSize)

库采用 maxSize 缩放参数,适用于两个维度中最长的一个。似乎通过一维缩放的变通解决方案是通过计算 maxSize 应该基于原始内容的内容,在 onSubmitted 回调中手动 运行 scaleImage()图像大小以获得所需高度或宽度的结果,但这有其自身的障碍:

onSubmitted 回调中使用 addFiles() 会触发另一个 onSubmitted 事件是有道理的;但是如果我使用 addFiles() 添加缩略图,缩略图会出现在 UI 列表中,这会触发另一个 onSubmitted 导致生成另一个缩略图,它会一直循环。

我需要生成一个重新训练的缩略图(最大高度为 240 像素,最大宽度为 320 像素)并在调用 uploadStoredFiles() 时将缩略图上传到单独的 S3 存储桶,而不触发另一个 onSubmitted 事件并且不将缩略图显示为 UI 文件列表中的 "duplicate" 条目。在 Fine-Uploader 中执行此操作的最佳方法是什么?


一些示例代码:

          function makeThumbnail() {
            // FIXME to avoid duplicate, put this in the compression success
            var thumbnailPromise = uploader.scaleImage(id, {
              maxSize: 123,
              quality: 45,
              customResizer: !qq.ios() && function (resizeInfo) {
                return new Promise(function (resolve, reject) {
                  pica.resizeCanvas(resizeInfo.sourceCanvas, resizeInfo.targetCanvas, {}, resolve)
                });
              }
            });
            thumbnailPromise.then(
                function (blob) {
                  console.log(URL.createObjectURL(blob));
                  uploader.addFiles(blob);
                },
                function (err) {
                }
            );
          }

在将缩放的 Blob 传递到 addFiles 之前,只需将自定义 属性 添加到 Blob 对象,例如 blob.myScaledImage = true。然后,在处理 onSubmitted 回调时,使用 getFile API method 检索关联的 Blob。如果 Blob 包含您的自定义 属性,请不要重新缩放它。