我将 FilePond 与图像编辑器一起使用,因此我还加载了 Image Transform 插件。
但是,当用户上传 GIF 文件时,我希望输出的图像保持为 GIF 文件。目前它已通过 Image Transform 插件转换为 PNG。
有没有办法让 FilePond 在上传 GIF 文件时禁用 Image Transform 插件,或者以某种方式更改输出 mime 类型?
我将 FilePond 与图像编辑器一起使用,因此我还加载了 Image Transform 插件。
但是,当用户上传 GIF 文件时,我希望输出的图像保持为 GIF 文件。目前它已通过 Image Transform 插件转换为 PNG。
有没有办法让 FilePond 在上传 GIF 文件时禁用 Image Transform 插件,或者以某种方式更改输出 mime 类型?
请安装3.6.0
图像转换插件版本并使用以下功能过滤掉动画GIF图像。
动画 GIF 过滤器代码片段 是否可以在客户端检测动画 gif 图像?
FilePond.create({
imageTransformImageFilter: (file) => new Promise(resolve => {
// no gif mimetype, do transform
if (!/image\/gif/.test(file.type)) return resolve(true);
const reader = new FileReader();
reader.onload = () => {
var arr = new Uint8Array(reader.result),
i, len, length = arr.length, frames = 0;
// make sure it's a gif (GIF8)
if (arr[0] !== 0x47 || arr[1] !== 0x49 ||
arr[2] !== 0x46 || arr[3] !== 0x38) {
// it's not a gif, we can safely transform it
resolve(true);
return;
}
for (i=0, len = length - 9; i < len, frames < 2; ++i) {
if (arr[i] === 0x00 && arr[i+1] === 0x21 &&
arr[i+2] === 0xF9 && arr[i+3] === 0x04 &&
arr[i+8] === 0x00 &&
(arr[i+9] === 0x2C || arr[i+9] === 0x21)) {
frames++;
}
}
// if frame count > 1, it's animated, don't transform
if (frames > 1) {
return resolve(false);
}
// do transform
resolve(true);
}
reader.readAsArrayBuffer(file);
})
});