【问题标题】:How to merge more images faster?如何更快地合并更多图像?
【发布时间】:2013-04-29 15:28:34
【问题描述】:

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

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

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

【问题讨论】:

  • `backticks` 仅用于内联代码,不强调。

标签: php image merge


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-02
    • 2015-09-20
    • 2019-09-04
    • 1970-01-01
    • 2013-10-04
    • 1970-01-01
    • 2019-11-19
    相关资源
    最近更新 更多