大图像时imagecreatefromstring失败

时间:2014-09-09 15:33:21

标签: php image image-processing

我有裁剪上传图片的代码。

$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')。但这个变种不适合我,因为我对主持人有限制。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您正在以1024 * 1024字节的块读取文件,但如果文件大于该文件,那么循环的每次迭代都会覆盖已经读取的内容

$freadedimage = '';
while (!feof($fh)) { 
    $freadedimage .= fread($fh, $buffer); 
    flush();
}