PHP中的图像大小减少

时间:2009-11-04 11:02:00

标签: php file size gd

在出现此错误的情况下:

  

致命错误:内存不足(已分配   31981568)(试图分配3264   字节)

在进入这个阶段之前,我可以先使用GD lib来减小文件大小吗?

5 个答案:

答案 0 :(得分:1)

简而言之:不。

GD使用内存来缩小图像的大小,如果图像太大,则超出内存限制并给出错误。

您可以计算图片的大小,以便您可以在此处保持一定的内存限制:http://www.dotsamazing.com/en/labs/phpmemorylimit

一个选项虽然是一个不受欢迎的选项,但是增加了内存限制,你可以使用ini_set()或.htaccess文件。请检查您的主机是否允许此操作。如果您有自己的主机,请相应地配置Apache。

一个(也提到过)选项是使用Imagemagick,这是一个在服务器上运行的程序,您可以调用该程序为您调整大小。此程序的内存限制可能与PHP的内存限制不同,但也可能存在限制。请联系您的主机以获取更多信息。

答案 1 :(得分:0)

您可以改为设置更高的内存限制。

ini_set('memory_limit', $file_size * 2);

因为如果你想使用GD减小大小,你仍然需要在减小大小之前为该文件分配内存。

另请记住为图片上传设置文件大小限制。

您可以使用filesize()功能在读取/打开文件之前检查文件大小。

答案 2 :(得分:0)

您是否正在使用PHP脚本从磁盘读取文件?

答案 3 :(得分:0)

这显然是从您之前的帖子继续。如果我没记错的话,这是你正在使用的上传图片吗?如果是这样,图像的大小是多少?如果它真的很大,你应该考虑限制图像上传的大小。

答案 4 :(得分:0)

当你想让内存做得更多时,就会发生这种情况......你可能想要查看imagemagick,所以不要通过PHP调整大小,只需向imagemagick发送请求以进行调整大小。

或者更简单的方法是通过ini增加每个php脚本脚本的内存限制。