[英]imagecreatefromstring failed when large image
我有一个用于上传图片的代码。
$fh = fopen($source, "rb") or die();
$buffer = 1024*1024;
while (!feof($fh)) {
$freadedimage=fread($fh, $buffer);
flush();
}
fclose($fh);
$sourceImg = imagecreatefromstring($freadedimage);
if ($sourceImg === false) {
throw new Exception("Invalid image.");
}
当文件不是很大时(大约300-900 Kb),一切都很好。 但是,当文件大小超过2 Mb时,我得到了错误:
警告:imagecreatefromstring():数据不是可识别的格式
我尝试使用file_get_contents而不是fread-完美运行。 但仅在ini_set('memory_limit','64M')的情况下。 但是此变体不适合我,因为我对主机有限制。
感谢您的帮助!
您正在读取1024 * 1024字节的文件,但是如果文件大于该文件,则循环的每次迭代都会覆盖已读取的内容
$freadedimage = '';
while (!feof($fh)) {
$freadedimage .= fread($fh, $buffer);
flush();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.