如何更快地合并更多图像?

时间:2013-04-29 15:28:34

标签: php image merge

我正在研究一个精灵生成器,我需要合并两个以上的图像。我的问题只是,我的脚本有点慢:

foreach ($imageData as $i)
{
$image_1 = imagecreatefrompng($timg.'.png');
$image_2 = imagecreatefrompng($imageS[$x]);

imagealphablending($image_1, true);
imagesavealpha($image_1, true); 
$magass = $magass + $imageData[$y][1];
imagecopy($image_1, $image_2, 0, $magass, 0, 0, $imageData[$x][0], $imageData[$x][1]);
                         // <-> | le
imagepng($image_1, $timg.'.png'); 
}

此脚本保存图像并合并到该图像上的图像并保存。之后打开它,放下一个图像,保存,打开另一个,保存等等......这是一个非常糟糕的解决方案。我怎样才能让性能更好。那么我怎么能只用一次保存合并所有?

1 个答案:

答案 0 :(得分:0)

不要保存中间步骤。提供基本图像,以及要在顶部合并的其他图像列表。在循环中一次合并,然后那么保存最终图像。现在你正在加载$source,加载$merge,覆盖,然后保存文件,然后关闭所有图像代码。接下来$ merge,你重复一遍。例如,你在无用的工作上浪费了大量的CPU周期。尝试更像:

$image_1 = imagecreatefrompng($timg.'.png');
foreach($imagedata as $img) {
    merge($image_1, $img);
}
imagepng($image_1);
而不是。你加载基本图像ONCE,覆盖其上的所有其他图像,然后最后保存输出。