2011-11-23 32 views
2

我必须调整通过Imagesmagick一个图像,并具有在一瞬间创建2个较小的版本,它是像这样做:结合2 imagesmagick调整大小命令

<?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

Downvoted在我的答案无理downvote。 – CAFxX

+0

是不是我downvote -_- –

+0

我upvoted你们两个,似乎对我有效的问答。 –

回答

1

关于优化图像缩小步骤的主题,如果不直接回答你的问题(如CAFxX,我从来没有看到一种方式来实现两个输出到一个ImageMagick命令)。

一种选择是从第一条命令的中等大小的图像中创建较小的缩略图。即:

  1. 收缩高分辨率源图像到500×500
  2. 从步骤1缩小500×500图像到90x90

这当然有助于速度。我也在某处读过一次(恐怕链接会让我失望),这不会使质量比从全尺寸缩小到90x90更糟糕,并且实际上可以让它看起来更好。

使用ImageMagick API可以很好地工作,因为您只需将源映像加载到内存中一次,缩小一次,保存JPEG,然后再次缩小它,而无需将数据从1加载回内存。

1

的ImageMagick的命令行的文件中明确指出,在多个输出端不支持:你唯一的选择,以做到这一点是通过直接使用,而不是命令行的gdImageMagick PHP的API(提示:使用Imagick::cloneimagecreatetruecolor/imagecopy函数)。

作为一个侧面节点,通过这种方式,您还可以避免为imagemagick客户端产生一个单独进程的开销。

编辑:此外,您可能需要缓存这些备用版本,以便每次有人要求时都不必重新生成它们。在几年前我开发的几个图像较重的网站上,我不得不这样做。

+0

GD是为了减慢我的应用程序,是ImageMagick API更快,然后直接使用Imagemagick? –

+0

我不明白它会如何变慢。此外,ImageMagick命令行的文档清楚地表明**不支持多个输出。 – CAFxX

+0

Downvote?为什么?!?!? – CAFxX