ng-file-upload 不会将 jpg 图像转换为 png

ng-file-upload won't convert jpg image to png

我正在尝试使用 ng-file-upload 将文件上传到我的服务器,同时调整它的大小并在客户端将其转换为 png。从文档中可以看出,使用 ngf-resize 属性并将 type 属性 设置为 image/png 是可能的。

此处的文档:https://github.com/danialfarid/ng-file-upload/blob/master/README.mdtype 描述为:"type is optional convert it to the given image type format."

当我尝试这个时,它适用于 png 源文件,但如果我使用 jpg 文件,它不会将其转换为 png,而是在 Javascript 控制台中出现此错误:

There were invalid base64 characters in the input text.
Valid base64 characters are A-Z, a-z, 0-9, NaNExpect errors in decoding.

这是我的代码:

<div ngf-drop ngf-select ng-model="file" class="drop-box" 
   ngf-drag-over-class="'dragover'" ngf-multiple="false" 
   ngf-allow-dir="false" accept="image/jpeg,image/jpg,image/png" 
   ngf-pattern="'image/jpeg,image/jpg,image/png'" 
   ngf-resize="{width: 100, height: 100, quality: .8, centerCrop: true, type: 'image/png'}">

是否可以使用 ng-file-upload 将 jpg 转换为 png?还是我有代码问题?我的目标是让浏览器进行转换,以便我的服务器只接收 png 图像。

问题是插件正在尝试恢复 png 文件上的 exif 数据,这将失败,因为它不是 jpeg。为避免这种情况,您可以:

<div ngf-drop ngf-select ng-model="file" class="drop-box" 
   ngf-drag-over-class="'dragover'" ngf-multiple="false" 
   ngf-allow-dir="false" accept="image/jpeg,image/jpg,image/png" 
   ngf-pattern="'image/jpeg,image/jpg,image/png'" 
   ngf-resize="{width: 100, height: 100, quality: .8, 
   centerCrop: true, type: 'image/png', restoreExif: false}">