0

我将 FilePond 与图像编辑器一起使用,因此我还加载了 Image Transform 插件。

但是,当用户上传 GIF 文件时,我希望输出的图像保持为 GIF 文件。目前它已通过 Image Transform 插件转换为 PNG。

有没有办法让 FilePond 在上传 GIF 文件时禁用 Image Transform 插件,或者以某种方式更改输出 mime 类型?

4

1 回答 1

1

请安装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);

    })
});
于 2019-11-22T09:08:26.503 回答