我正在使用带有PHP IMagick API的ImageMagick处理上传的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;
}
blob表示的图像是jpg图像,但ImageMagick在尝试读取该行时抛出异常:
$image->readImageBlob($blob);
有人知道为什么会这样吗?
答案 0 :(得分:1)
我找到了问题的答案。发生异常的原因确实是因为库没有内置jpeg支持,但发生这种情况的原因是因为Imagick php扩展版本和ImageMagick库的版本不同。
确保不遇到此问题的一个好方法是下载ImageMagick库和Imagick php扩展程序,并专门查看版本以查看它们匹配。
或者,你可以通过在php.ini文件中启用它来检查php / ext文件夹中的Imagick php扩展的版本,并使用
echo phpinfo();
检查扩展的版本。然后,您可以下载相同版本的ImageMagick库。