图像处理。如何加快性能

时间:2013-10-19 16:32:29

标签: php image image-processing php-imagine

我使用REST API从商店获取产品,大约有3k条记录。不幸的是,我需要自己创建产品的缩略图。为此,我使用PHP Imagine库 在下一个任务中将产品插入/更新到数据库后,我从数据库中选择所有记录并尝试为每个产品创建缩略图 它有效......但是我能够在120秒内创建12个缩略图(这就是我的执行时间脚本)。 12个缩略图对我来说太低了,我想加快这个过程,但我怎么能这样做?
所有缩略图都是240x360px,每个缩略图的大小约为12KB。

以下是我用于生成缩略图的代码:

public function generateThumbnails($products) 
{
    $imagine = new Imagine();
    $resize = 240/360;

    foreach($products as $product)
    {
        if(!file_exists('data/thumbs/'.$product['productId'].'.jpg')){

            $img = $imagine->open($product['productImage']);
            $size = $img->getSize();

            $width = $size->getWidth();
            $height = $size->getHeight();

            $newWidth = floor($height*$resize);

            $cordX = $width/2-$newWidth/2;

            if($cordX < 0)
                $cordX = 0;


            $img->crop(new Point($cordX, 0), new Box($newWidth, $height))->resize(new Box(240, 360))->save('data/thumbs/'.$product['productId'].'.jpg');
        }
    }

}

我在localhost(Windows 7)上运行此脚本,它是基于Zend Framework 2 + Doctrine 2的应用程序的一部分

1 个答案:

答案 0 :(得分:1)

再次需要缩略图时,可以使用缓存或文件缓存。