2

我需要将这些图像合二为一。为此,我执行以下操作:

  1. 创建具有正确尺寸的空白图像

    $full_image = imagecreate($full_width, $full_height);

  2. 将png图像一张一张复制到空白图像上

    imagecopy($full_image, $src, $dest_x, $dest_y, 0, 0, $src_width, $src_height)

但是,有些图像变得非常大 ex:imagecreatetruecolor(8832, 3955); 我得到了Allowed memory size of 134217728 bytes exhausted (tried to allocate 8832 bytes)

我想知道是否有一种方法可以将图像放在一起,而不会将整个图像存储在内存中。在生成图像时,可能会以一定的时间间隔将图像数据写入磁盘。

4

1 回答 1

3

首先:当你完成一个资源或一个大数组等时,使用 unset($resource); 将其标记为“准备好”进行垃圾收集。

其次,图像处理非常密集。您可以考虑使用类似Gearman的东西,它基本上允许您将密集的进程分流到队列中。

第三,你也可以试试这个:

ini_set('memory_limit', '256M');
于 2013-08-27T12:52:47.180 回答