所以我放弃了。我有更多的论坛窗口打开,我可以数,尝试了一堆不同的东西,但仍然没有运气。我安装了laravel 5.0的干预,可以通过一些图像,但其他(很多)炸弹出现以下错误
Decoder.php第35行中的ErrorException: imagecreatefromjpeg():gd-jpeg,libjpeg:可恢复的错误:损坏的JPEG数据:标记为0xd9之前的1130个无关字节
use Intervention\Image\ImageManager;
//use Intervention\Image\Image;
//use Intervention\Image\Facades\Image;
use Image;
public function storepic($id)
{
$gallry=auth()->user()->galleries()->findorfail($id);
$files = Input::file('images');
// Making counting of uploaded images
$file_count = count($files);
// start count how many uploaded
$uploadcount = 0;
ini_set('gd.jpeg_ignore_warning', true);
$dt=Carbon::now();
Carbon::setToStringFormat('omj_His');
foreach($files as $file) {
$rules = array('file' =>'required|mimes:png,gif,jpeg,jpg');
$d=array('file'=> $file);
$ext=$file->getClientOriginalExtension();
$mim=$file->getClientMimeType();
$validator = Validator::make($d, $rules);
if($validator->passes()){
//save file
$upPath = 'uploads/galleries/' . $id . '/';
$filename = $dt . $file->getClientOriginalName() ;
$upload_success = $file->move($upPath, $filename);
// save to db
$imag['oFileName']=$file->getClientOriginalName() ;
$imag['sFileName']=$filename;
$imag['gid']=$id;
$pic=new Pictures($imag);
$pic->save();
if ($gallry['img_id']==null){
$gallry['img_id']=$pic['pid'];
$gallry->save();
}
//create thumbnail
$path = 'uploads/thumbs/' . $id . '/';
// below used to all be one statement - it didn't effect it either way
$img= Image::make($upPath . $filename);
$img->resize(null, 100, function ($constraint) {
$constraint->aspectRatio();
$constraint->upsize();
});
$img->save($path . $filename);
$uploadcount ++;
}
}
所以我试过 用...压制错误 ini_set(' gd.jpeg_ignore_warning',true); 在多个地方 2.使用二进制文件重新创建图像,将图像的大小吹成5倍 3.尝试了createimagefromstring而不是jpeg
我正在思考/想知道 - 如果我没有正确地抑制错误。 - 与想象力相反,gd库的问题。我还没有添加想象力,但可以,这似乎是一种痛苦 -i可以尝试在另一个程序中进行调整大小,但这似乎就是推迟了问题任何想法都将不胜感激。谢谢你的帮助!
答案 0 :(得分:1)
我有同样众所周知的问题。将ini_set添加为index.php的第一行并不适用于我的情况。
我最终得到了一个try catch解决方案,警告用户JPG已损坏。
try {
$img = Image::make($filename);
} catch(\Exception $e) {
my_flash_message($e->message);
}
注意Exception是命名空间,因此您必须使用斜杠。
希望它有所帮助。