内存限制=80M。imagecreateformjpeg()的最大图像大小是多少?

内存限制=80M。imagecreateformjpeg()的最大图像大小是多少?,image,php,phpinfo,memory-limit,Image,Php,Phpinfo,Memory Limit,我有一个最大内存限制为80M的网络主机(即ini设置(“内存限制”,“80M”))。 我正在使用使用函数imagecreatefromjpeg()的照片上载; 当我上传大图片时,会出现错误 “致命错误:允许的内存大小83886080字节已用尽” 我可以限制用户使用的图像最大大小(以字节为单位)是多少? 或者内存限制取决于其他因素?8388608的内存大小是8兆字节,而不是80兆字节。您可能需要检查是否仍可以在某个位置增加该值 除此之外,图像处理的一般规则是至少需要 image width x i

我有一个最大内存限制为80M的网络主机(即ini设置(“内存限制”,“80M”))。 我正在使用使用函数imagecreatefromjpeg()的照片上载; 当我上传大图片时,会出现错误 “致命错误:允许的内存大小83886080字节已用尽” 我可以限制用户使用的图像最大大小(以字节为单位)是多少?
或者内存限制取决于其他因素?

8388608的内存大小是8兆字节,而不是80兆字节。您可能需要检查是否仍可以在某个位置增加该值

除此之外,图像处理的一般规则是至少需要

image width x image height x 3 
用于加载或创建映像的内存字节数。(一个字节表示红色,一个字节表示绿色,一个字节表示蓝色,可能还有一个字节表示alpha透明度)

按照这个规则,640x480像素的图像至少需要9.2兆字节的空间——不包括脚本本身占用的开销和空间

无法确定JPG文件大小的字节限制,因为JPG是一种压缩率可变的压缩格式。你需要根据图像分辨率来设定一个限制


如果您没有那么多可用内存,您可能希望研究更有效的方法来完成您想要的任务,例如平铺(一次处理图像的一部分),或者,如果您的提供商允许,使用外部工具,如(它也消耗内存,但超出PHP脚本的内存限制).

可能您的脚本使用的内存比图像本身更多。正在尝试调试内存消耗


一种快速而肮脏的方法是在代码中的某些点上,特别是在自定义和自定义环境中,利用内存的使用情况。这可以让您知道是什么操作导致内存耗尽。

看起来您的主机将内存限制在8M,而不是80M。您想对您
创建的FromJPEG()图像做什么?可能有一个内存高效的解决方案。嗨,Pekka,谢谢你的回答,很抱歉我错误地把它写成8388608,它实际上是83886080字节。当我试图上传3.5MB的3200X2400时,它给出了错误。为了防止错误,我可以限制上传的最大宽度、高度或大小?提前感谢:-)@Arun很难说!3200x2400映像应该可以很好地容纳80MB—可能是脚本没有有效地编写,而是将整个映像存储在多个变量中。