Php Gdlib图像调整内存大小?

时间:2012-08-06 16:05:29

标签: php image-processing image-resizing gdlib

我正在尝试上传和调整JPG照片的大小。上传照片后我会调整它,但会收到以下错误:

  

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

配置(php.ini):

memory_limit = 64M

PHP:

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

我做错了什么?

3 个答案:

答案 0 :(得分:1)

让我们进行转换:

  

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

     

67 123 968字节= 64兆字节+ 15 104字节(溢出)

结论: 64M 是不够的。

答案 1 :(得分:1)

使用GD调整jpeg图像大小时,文件大小通常不会像图像尺寸那样对内存使用产生太大影响。这是因为jpegs具有着名的高压缩性,GD函数(例如imagecreatefromjpeg)将生成未压缩的图像/像素数据。你可以通过尝试至少一些事情来避免你的错误:

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

答案 2 :(得分:1)

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