我正在研究一个精灵生成器,我需要合并两个以上的图像。我的问题只是,我的脚本有点慢:
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');
}
此脚本保存图像并合并到该图像上的图像并保存。之后打开它,放下一个图像,保存,打开另一个,保存等等......这是一个非常糟糕的解决方案。我怎样才能让性能更好。那么我怎么能只用一次保存合并所有?
答案 0 :(得分:0)
不要保存中间步骤。提供基本图像,以及要在顶部合并的其他图像列表。在循环中一次合并,然后那么保存最终图像。现在你正在加载$source
,加载$merge
,覆盖,然后保存文件,然后关闭所有图像代码。接下来$ merge,你重复一遍。例如,你在无用的工作上浪费了大量的CPU周期。尝试更像:
$image_1 = imagecreatefrompng($timg.'.png');
foreach($imagedata as $img) {
merge($image_1, $img);
}
imagepng($image_1);
而不是。你加载基本图像ONCE,覆盖其上的所有其他图像,然后最后保存输出。