我该如何处理使用ImageMagick(IMagick API)的jpg文件?我得到一个例外,NoDecodeDelegateForThisImageFormat,whenver我试试

StackOverflow https://stackoverflow.com/questions/2285161

  •  21-09-2019
  •  | 
  •  

我使用ImageMagick与PHP IMagick API来处理上传JPG文件 - 但是,当我尝试读取的Blob甚至读一物理文件,我得到一个NoDecodeDelegateForThisImageFormat例外

我使用的代码的一个例子是如下所示:

private function resizeImageBlob($blob, $width, $height) {
    $image = new Imagick();
    $image->readImageBlob($blob);
    $image->resizeImage($width, $height, IMAGICK::FILTER_LANCZOS, 1);
    $resizedBlob = $image->getImageBlob();

    return $resizedBlob;
}

这斑点表示的图像是一个jpg图片,但ImageMagick的抛出异常时它会尝试读取的行:

$image->readImageBlob($blob);

有谁知道为什么会发生?

有帮助吗?

解决方案

我想通了,回答我的问题。除了正在发生的原因是确实是由于这样的事实,该库没有内置支持JPEG,但发生这种情况的原因是因为Imagick PHP扩展的版本和ImageMagick库的版本是不同的。

一个很好的方式,以确保不会碰到这个问题的方法是同时下载ImageMagick库和Imagick PHP扩展,并专门看版本,以查看它们是否匹配

另外,您也可以通过启用它在你的php.ini文件,并使用检查Imagick PHP扩展的PHP / ext文件夹的版本

echo phpinfo();

以检查扩展的版本。然后,您可以下载ImageMagick库的版本相同。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top