尝试将 gif 图像写入缓冲区时出错

Getting error while try to write gif image to buffer

我正在使用 PHP libvips 库,当我使用此函数时 writeToBuffer 用于写入缓冲图像,它给我以下类型的错误。

Fatal error: Uncaught Jcupitt\Vips\Exception: magicksave_buffer: libMagick error: no decode delegate for this image format `' @ error/blob.c/ImagesToBlob/2413

注意 - 只有当我的图像类型是 gif 时才会出现此错误

$imagePathInfo = pathinfo($inputFileName);
$imgExtension = $imagePathInfo['extension'];
$img = Vips\Image::newFromFile($inputFileName, ['access' => 'sequential']);
$img = $img->writeToBuffer('.' . $imgExtension);

默认情况下,libvips 只会加载动画的第一帧。要加载所有帧,请将 n 参数(页数)设置为 -1。使用:

$img = Vips\Image::newFromFile($inputFileName, [
    'access' => 'sequential', 
    'n' => -1
]);

libvips 8.11 使用imagemagick 编写GIF 图片。你需要用format参数告诉imagemagick写什么格式,eg.:

$img = $img->writeToBuffer('.' . $imgExtension, [
    'format' => $imgExtension
]);

libvips 8.12(将于 2021 年 11 月底到期)将自动将正确的格式值传递给 imagemagick,并且还有一个专用且速度快得多的 GIF 编写器。