【问题标题】:Php Gdlib image resize memory?Php Gdlib图像调整内存大小?
【发布时间】:2012-08-03 15:18:33
【问题描述】:

我正在尝试上传 JPG 照片并调整其大小。上传照片后,我会调整其大小,但出现以下错误:

致命错误:允许的内存大小为 67108864 字节已用尽(尝试分配 15104 字节)

配置(php.ini):

memory_limit = 64M

PHP:

ini_set("memory_limit", "64M");

我做错了什么?

【问题讨论】:

  • “我做错了什么” - 当你没有向我们展示你在做什么时,很难回答这个问题。您要调整的图片有多大?

标签: php image-processing image-resizing gdlib


【解决方案1】:

使用 GD 调整 jpeg 图像的大小时,文件大小对内存使用的影响通常不如图像尺寸那么大。这是因为 jpeg 具有众所周知的高压缩率,而 GD 函数(例如 imagecreatefromjpeg)将生成未压缩的图像/像素数据。您可以通过尝试至少以下几件事之一来避免您的错误:

  1. 进一步增加memory_limit
  2. 上传后立即检查图片尺寸,如果图片的像素数超过一定数量,请避免进一步处理。

【讨论】:

  • gd 像素数据完全没有被压缩。内存中的表示是一个原始位图。内存压缩只会减慢一切。
  • @Marc B - 这是我的猜测。谢谢
【解决方案2】:

解压后的图像每个像素至少占用 3 个字节,因此如果您的图像非常大,您可能会遇到麻烦。但是,也可能是您的代码有问题。不要忘记在内存中不再需要的任何图像上调用imagedestroy

【讨论】:

    【解决方案3】:

    让我们进行转换:

    67 108 864 字节 = 65 536 千字节 = 64 兆字节

    67 123 968 字节 = 64 兆字节 + 15 104 字节(过低)

    结论:64M还不够。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-18
      • 2011-05-17
      • 2017-08-10
      • 2011-11-25
      • 2012-01-09
      • 1970-01-01
      • 2011-06-04
      • 1970-01-01
      相关资源
      最近更新 更多