PHP创建超大图像文件

时间:2017-12-08 09:23:05

标签: php image gd large-data

在我的应用中,用户上传多张照片(例如每张3000x2000,JPG和PNG格式)。我的PHP程序需要布置这些照片并将它们组合成一张大照片。

例如,用户上传4张照片 - p1.jpg,p2.jpg,p3.jpg,p4.jpg,每张照片都是3000x2000。我需要创建一个大图像,将4个图像放置在2x2网格布局中,如下所示 -

+-----+-----+  (overall witdh = 6000, overall height = 4000)
| p1  | p2  |
+-----+-----+
| p3  | p4  |
+-----+-----+

我可以缩小每个图像(例如原始图像的50%),以便缩小整体尺寸,但如果用户上传8张图像或16张图像,整体尺寸将再次变得非常大。

生成的图像将在PHP中消耗非常高的内存,所以我的问题是,用最少的内存消耗创建大图像的最佳方法是什么。

我的一个想法是我们使用流来处理大块数据文件。所以我想知道是否有一个解决方案/库允许chunk-by-chunk图像合并。

1 个答案:

答案 0 :(得分:0)

我可以建议您不要上传一张大图像,而是可以独立上传所有图片,但在显示或下载时,您可以编写一些脚本,将所有上传的图像转换为您的一个大图像布局。

如果您对图像有一些特定的位置,那么您可以使用名为http://fabricjs.com/的画布库。通过使用此库,您可以自定义图像,并可以保存数据库中的所有图像位置,稍后您可以根据该位置获取图像。