我有裁剪上传图片的代码。
$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')。但这个变种不适合我,因为我对主持人有限制。
感谢您的帮助!
答案 0 :(得分:0)
您正在以1024 * 1024字节的块读取文件,但如果文件大于该文件,那么循环的每次迭代都会覆盖已经读取的内容
$freadedimage = '';
while (!feof($fh)) {
$freadedimage .= fread($fh, $buffer);
flush();
}