Laravel,干预,损坏的JPEG数据:标记0xd9之前的1130个无关字节

时间:2016-02-16 17:05:56

标签: laravel intervention

所以我放弃了。我有更多的论坛窗口打开,我可以数,尝试了一堆不同的东西,但仍然没有运气。我安装了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可以尝试在另一个程序中进行调整大小,但这似乎就是推迟了问题

任何想法都将不胜感激。谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

我有同样众所周知的问题。将ini_set添加为index.php的第一行并不适用于我的情况。

我最终得到了一个try catch解决方案,警告用户JPG已损坏。

try {
    $img = Image::make($filename);
} catch(\Exception $e) {
    my_flash_message($e->message);
}

注意Exception是命名空间,因此您必须使用斜杠。

希望它有所帮助。