1

我使用 imagick 创建带角的缩略图。

以下是有趣的行:

$background = 'white';
$image->cropThumbnailImage($width,$height);
$im = new Imagick(); 
$im->newImage($width, $height, $background); 
//$image->sharpenImage(50, 1); 
$image->roundCorners( $cornersSize, $cornersSize);
$im->compositeImage($image, Imagick::COMPOSITE_OVER, 0, 0); 
$im->setImageFormat('jpeg');
$im->flattenImages(); 
$image = $im;

在服务器上创建它需要 10 秒!

在小型笔记本电脑上,需要 1.5 秒(仍然很慢)。

我们该如何改进呢?

精度:

我只用一张图片重新启动代码:20148px x 1222px。笔记本电脑 10 秒,服务器 20 秒。

服务器:

笔记本电脑:

  • php5-imagick : 3.0.0~rc1-1build1
  • imagemagick:7:6.6.2.6-1ubuntu1.1
  • Ubuntu 10.10
  • 2048mo 内存 1333MHz DDR3
  • 英特尔酷睿 i3-370M 2,4GHz,3MB

服务器:

  • 英特尔至强(16 Mo 高速缓存)
  • 8Go 内存 (RDIMM)
  • 没有网站在线。
4

2 回答 2

2

如果您的服务器是 Ubuntu 10.04/Debian 6,使用 Viruozzo,或者可能是其他虚拟化平台,或者可能只是多处理器系统,这可能是 ImageMagick 的 OpenMP 支持的错误。

在这些平台上使用 imagick PHP 扩展时,Imagemagick 可能会很慢。制作一个简单的图像需要几秒钟而不是几毫秒。

对我有用的解决方案:http: //tellgren.com/blog/2011/03/24/trouble-with-imagemagick-on-vps/

于 2011-10-26T10:27:48.183 回答
0

虽然您可以使用 GPU 进行一些处理,但在这种情况下不使用它。只有你的 CPU。

看来您正在执行一些不必要的步骤。这有什么问题:

$image->cropThumbnailImage($width,$height);
$image->roundCorners( $cornersSize, $cornersSize);
于 2011-01-17T11:24:56.477 回答