PHP - imagecreatetruecolor - 允许内存大小耗尽

时间:2013-08-27 12:40:41

标签: php io

我需要将这些图像合二为一。为此我做了以下事情:

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

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

  2. 将png图像逐个复制到空白图像

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

  3. 然而,有些图片变得非常大:imagecreatetruecolor(8832, 3955);而我获得了Allowed memory size of 134217728 bytes exhausted (tried to allocate 8832 bytes)

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

1 个答案:

答案 0 :(得分:3)

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

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

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

ini_set('memory_limit', '256M');