我需要将这些图像合二为一。为此我做了以下事情:
创建具有正确尺寸的空白图像
$full_image = imagecreate($full_width, $full_height);
将png图像逐个复制到空白图像
imagecopy($full_image, $src, $dest_x, $dest_y, 0, 0, $src_width, $src_height
)
然而,有些图片变得非常大:imagecreatetruecolor(8832, 3955);
而我获得了Allowed memory size of 134217728 bytes exhausted (tried to allocate 8832 bytes)
我想知道是否有办法将图像放在一起,而不将整个图像存储在内存中。也许在生成图像时以一定的间隔将图像数据写入磁盘。
答案 0 :(得分:3)
首先:当你完成资源或大型数组等时,使用unset($ resource);将其标记为“准备好”进行垃圾收集。
其次,图像处理非常密集。您可以考虑使用类似Gearman的东西,它基本上允许您将密集的进程分配到队列。
第三,你也可以试试这个:
ini_set('memory_limit', '256M');