我必须通过Imagesmagick调整图像大小,并且必须创建它的2个较小版本,就像这样:
<?php
$command = $IMPath.'convert -limit memory 32 input.jpg -resize 500x500 biggeroutput.jpg';
exec($command, $output);
$command = $IMPath.'convert -limit memory 32 input.jpg -resize 90 smalleroutput.jpg';
exec($command, $output);
?>
有没有办法将它与一个执行官合并?没有开始转换2次?
答案 0 :(得分:1)
ImageMagick命令行的文档明确指出不支持多个输出:您唯一的选择是直接使用gd或ImageMagick PHP API而不是命令行(提示:使用Imagick::clone
或imagecreatetruecolor
/ imagecopy
函数。
作为一个副节点,通过这种方式,您还可以避免仅为imagemagick客户端生成单独进程的开销。
编辑:此外,您可能希望缓存这些备用版本,这样您就不必在每次有人要求时重新生成它们。我不得不在几年前开发的几个图像密集的网站上做同样的事情。
答案 1 :(得分:1)
关于优化图像缩小步骤的主题,没有直接回答你的问题(比如CAFxX,我从未见过两种输出到一个ImageMagick命令的方法)。
一种选择是从第一个命令的中型图像创建较小的缩略图。即:
这肯定有助于提高速度。我也读过一次(我害怕链接逃脱了我),这不会使质量比从全尺寸缩小到90x90更糟糕,并且实际上可以让它看起来更好。
使用ImageMagick API可以很好地实现这一点,因为您将源图像加载到内存中一次,缩小一次,保存JPEG,然后再次收缩它而不从1加载数据从磁盘返回内存。