PHP 创建超大图像文件
PHP creates super large image file
在我的应用程序中,用户上传多张照片(例如,每张 3000x2000,JPG 和 PNG 格式)。我的 PHP 程序需要对这些照片进行布局并将它们组合成 1 张大照片。
例如,用户上传了 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 中消耗非常高的内存,所以我的问题是,以最少的内存消耗创建大图像的最佳方法是什么。
我的一个想法是我们使用流来逐块处理大型数据文件。所以我想知道是否有 solution/library 允许逐块图像合并。
我建议您可以单独上传所有图片,而不是上传一张大图片,但是在显示或下载时您可以编写一些脚本,将所有上传的图片转换为您的一张大图片布局。
如果您对图像有一些特定的位置,那么您可以使用名为 http://fabricjs.com/ 的 canvas 库。通过使用此库,您可以自定义图像,并且可以将所有图像位置保存在数据库中,稍后您可以根据该位置获取图像。
在我的应用程序中,用户上传多张照片(例如,每张 3000x2000,JPG 和 PNG 格式)。我的 PHP 程序需要对这些照片进行布局并将它们组合成 1 张大照片。
例如,用户上传了 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 中消耗非常高的内存,所以我的问题是,以最少的内存消耗创建大图像的最佳方法是什么。
我的一个想法是我们使用流来逐块处理大型数据文件。所以我想知道是否有 solution/library 允许逐块图像合并。
我建议您可以单独上传所有图片,而不是上传一张大图片,但是在显示或下载时您可以编写一些脚本,将所有上传的图片转换为您的一张大图片布局。
如果您对图像有一些特定的位置,那么您可以使用名为 http://fabricjs.com/ 的 canvas 库。通过使用此库,您可以自定义图像,并且可以将所有图像位置保存在数据库中,稍后您可以根据该位置获取图像。