我有一个奇怪的想象力问题,我似乎无法诊断。 我有以下源图像:
以下代码:
$img = new Imagick($path);
header("Cache-Control: private, max-age=10800, pre-check=10800");
header("Pragma: private");
header("Expires: " . date(DATE_RFC822,strtotime(" 11 months")));
header('Content-type: image/png');
echo $img;
这会产生以下图像:
这只发生在我拥有的类似图标图像的大型库的非常小的子集中,我无法弄清楚原因。谷歌搜索我发现一些ImageMagick版本有奇怪的颜色配置文件的问题,但它们都有相同的颜色配置文件(sRGB),它们都是相同的尺寸,虽然这个图像是灰度的,但它没有只发生灰度图像等。
即使是curiouser,它也不会发生在我的登台服务器上,它运行相同版本的php5-imagick(最初是3.2.1但升级到3.3.0RC2,希望能让这个问题消失)。我可以在两台服务器之间找到的唯一相关区别是,当运行phpinfo
时,登台(未受影响)服务器会显示
Imagick compiled with ImageMagick version ImageMagick 6.8.9-9 Q16 x86_64 2015-01-05 http://www.imagemagick.org
Imagick using ImageMagick library version ImageMagick 6.8.9-9 Q16 x86_64 2015-09-19 http://www.imagemagick.org
生产(受影响)服务器说
Imagick compiled with ImageMagick version ImageMagick 6.7.7-10 2014-03-08 Q16 http://www.imagemagick.org
Imagick using ImageMagick library version ImageMagick 6.7.7-10 2014-03-08 Q16 http://www.imagemagick.org
为了解决这个问题,我从源代码编译并在生产服务器上安装了ImageMagick 6.9.2-5
。尽管phpinfo
返回
convert -version
仍然报告6.7.7-10的结果
Version: ImageMagick 6.9.2-5 Q16 x86_64 2015-11-02 http://www.imagemagick.org
我无法弄清楚如何将想象扩展指向新的ImageMagick二进制文件。而且我实际上不知道ImageMagick的版本是否会导致这种效果,但我已经没有其他想法了,这是我能找到的唯一区别,所以它是兔子洞我在过去的几个小时里一直在跳下去。
有没有办法在php5-imagick中配置ImageMagick路径?或者是否有其他人在(某些)图像上遇到这种奇怪的效果并以其他方式成功地解决了它?