繁体   English   中英

大图像时imagecreatefromstring失败

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM