有没有办法减少php createimagefromjpeg内存使用?

时间:2013-01-13 15:42:56

标签: php image-uploading large-files memory-limit

我正在建立一个网站,我应该能够上传非常大的图像(从2MB到50MB)。当然我需要调整它们的大小,但createimagefromjpeg函数使用大量内存。对于某些图像,内存使用量达到800兆字节,但我使用的是hostgator的共享计划,256M内存最大。我可以以某种方式减少此功能使用的内存吗?

2 个答案:

答案 0 :(得分:2)

根据the Hostgator forums,应在您的服务器上安装ImageMagick。我建议使用二进制文件,例如图像大小调整,因为效率很高。要做你想做的事情,这样的命令就足够了(假设你想要你想要的2 MB):

$SCALED_VALUE = (2097152/filesize($OLD_IMAGE))*100; #< Get the percentage of scaling that is required to go to 2MB
shell_exec('convert '. $OLD_IMAGE . '-resize ' . $SCALED_VALUE . '% new_image.jpg'); #< Perform scaling

在评论中回答关于php_memory_limit的问题;此限制在PHP内,不会影响ImageMagick(或PHP以外的任何其他应用程序)。

答案 1 :(得分:1)

尝试切换到其他图像处理库,例如ImageMagickGmagick,而不是依赖GD扩展。您必须安装这些依赖项并重新启动Apache。

如果无法做到这一点,请考虑按照this answer中的说明减少图像的像素大小。