使用 PHP 图像调整大小/裁剪内置方法的高内存使用率

Posted

技术标签:

【中文标题】使用 PHP 图像调整大小/裁剪内置方法的高内存使用率【英文标题】:High memory usage using PHP image resize/crop build in methods 【发布时间】:2017-01-18 10:27:02 【问题描述】:

使用 imagecreatefromjpeg()imagecrop()imagecopyresampled()php 函数裁剪和调整图像大小时,您会收到有关内存使用率高的通知。

如果我在 CMS 中实现这个裁剪模块,假设有 50 个人同时调用裁剪函数:内存使用量是否会乘以 50,从而导致服务器内存资源过载?

如果是这样,将请求排队或防止过载的好方法是什么?

【问题讨论】:

【参考方案1】:

虽然这可能不是您问题的直接答案,但根据我的经验,在另一台服务器上处理图像处理总是更好,因为您不希望单个用户用几张图像杀死整个网络服务器。

如果您在不同的服务器上处理您的图像并且它死了,最糟糕的情况是图像将返回 404,但网络服务器本身将继续正常运行。

无论如何,我肯定会推荐使用 ImageMagick 之类的库。它更容易使用,我相信你可以设置它不能超过的内存限制。

到目前为止,我发现的图像处理的最佳方法是 AWS Lambda。您可以轻松编写一个无服务器 nodeJS 脚本来下载您的图像,对其进行任何修改并将其上传回您的服务器。除非您每天需要处理数千张图像,否则您几乎可以免费运行它,并且它可以处理多达 100 个同时调用(它基本上一次启动多达 100 个服务器),因此理论上它可以比您快 100 倍必须将您的请求排队。

【讨论】:

以上是关于使用 PHP 图像调整大小/裁剪内置方法的高内存使用率的主要内容,如果未能解决你的问题,请参考以下文章

PHP图像调整大小和裁剪功能

PHP:图像调整大小和裁剪为纵向

Dart/Flutter 替代 PHP 调整裁剪图像大小?

ImageMagick:转换、裁剪、调整大图像

php调整图像大小然后裁剪图像问题

图像调整大小和裁剪