【问题标题】:How i can know if an Image will cause a php memory_limit error?我如何知道图像是否会导致 php memory_limit 错误?
【发布时间】:2014-01-29 17:46:44
【问题描述】:

在调整图像大小期间,我收到 PHP 的“内存不足”错误。我可以通过在我的php.ini 中设置一个更大的值来解决它,但是如果我不能修改我的php.ini(并且我也不能使用 PHP 设置这个值运行时)由于 webhosting 安全策略会发生什么?

我使用$_Files 的普通帖子上传图片,我的memory_limit 是32 mb。如何计算图像在调整大小期间是否会导致此错误?上传的照片可能有不同的格式和重量;我正在尝试将大小调整为 820 像素的唯一宽度。

编辑

我找到了这个网站http://www.dotsamazing.com/en/labs/phpmemorylimit 也许我必须复制这个计算,但这似乎很难做到。

【问题讨论】:

  • 如果您无法更改 php.ini 或更改 memory_limit ,那么您已经很吃力了,您应该寻找更灵活的托管服务提供商。不要指望普通互联网用户在上传照片之前就知道如何调整照片大小。
  • 你应该做的是在浏览器中调整图像大小(使用JS),然后将小图像上传到PHP脚本。这样,如果有人遇到内存不足错误,则更有可能是浏览器。
  • 你用什么来调整图像的大小?你在 php 中使用 gd 函数吗?
  • 是的,我正在使用 gd 来调整大小。

标签: php html memory-limit


【解决方案1】:

您似乎想在尝试调整图像大小之前获取图像大小。

例如,一旦你在服务器上有一个文件的临时路径,就将它传递给函数:

$image_size = getimagesize('/path/to/image');

这将为您提供有关图像的大量信息,包括它的大小。

一旦你有了 tthis,然后减去你的 memory_limit,你可以得到的值:

$my_memory_limit = ini_get('memory_limit');

所以你的可用内存变成了

$memory_available = $my_memory_limit - $size;

此时您可以决定是否有内存来调整它的大小(取决于您的调整大小过程的内存成本,或者您是否将其踢回给用户并告诉他们使用较小的图像。

【讨论】:

  • 感谢您的回答,但我想知道是否有可能知道调整图像大小所需的内存。调整大小所需的内存大于图片大小占用的内存。
  • 啊,我明白了,这将取决于调整图像大小的确切代码。通常使用诸如“imagecreatefromjpeg”之类的函数......这需要非常深入地了解调整大小代码的工作方式。但是,最坏的情况应该是图像大小乘以 2(这会将图像大小调整为与它相同的大小)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-09
  • 1970-01-01
  • 1970-01-01
  • 2012-02-27
  • 2014-10-22
  • 1970-01-01
  • 2012-02-17
相关资源
最近更新 更多