0

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

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'); 
}

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

4

1 回答 1

0

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

$image_1 = imagecreatefrompng($timg.'.png');
foreach($imagedata as $img) {
    merge($image_1, $img);
}
imagepng($image_1);

相反。您加载基础图像一次,将所有其他图像覆盖在其上,然后最后保存输出。

于 2013-04-29T15:35:34.480 回答