我有一个虚拟主机,最大内存限制为 80M(即 ini_set("memory_limit","80M");)。
我正在使用使用函数 imagecreatefromjpeg(); 的照片上传。
当我上传大图片时出现错误
“致命错误:允许的内存大小 83886080 字节已耗尽”
我可以限制用户的图像最大大小(以字节为单位)?
或者内存限制取决于其他一些因素?
内存大小为8388608
是 8 MB,而不是 80。您可能想检查是否仍然可以在某处增加该值。
除此之外,图像处理的一般规则是至少需要
image width x image height x 3
用于加载或创建图像的内存字节。 (一字节表示红色,一字节表示绿色,一字节表示蓝色,可能还有 1 个字节表示 alpha 透明度)
根据该规则,640 x 480 像素的图像将需要至少 9.2 MB 的空间 - 不包括脚本本身占用的开销和空间。
无法确定 JPG 文件大小的限制in bytes因为JPG是一种具有可变压缩率的压缩格式。您需要根据图像分辨率并对其设置限制。
如果您没有那么多可用内存,您可能需要研究更有效的方法来完成您想做的事情,例如平铺(一次处理图像的一部分),或者,如果您的提供商允许,使用外部工具,例如图像魔术师 http://www.imagemagick.org/script/index.php(它也会消耗内存,但超出了 PHP 脚本的内存限制)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)