1

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

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

配置(php.ini):

memory_limit = 64M

PHP:

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

我究竟做错了什么?

4

3 回答 3

1

让我们进行转换:

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

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

结论:64M还不够。

于 2012-08-06T16:15:52.667 回答
1

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

  1. memory_limit进一步增加
  2. 上传后立即检查图像尺寸,如果图像的像素数超过一定数量,请避免进一步处理。
于 2012-08-06T16:22:16.560 回答
1

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

于 2012-08-06T16:26:29.623 回答