1

所以我放弃了。我打开的论坛窗口数不胜数,尝试了很多不同的东西,但仍然没有运气。我已经安装了 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 ++;
      }
    }       

所以我尝试 1. 使用 ini_set('gd.jpeg_ignore_warning', true); 抑制错误;在多个地方 2. 使用二进制重新创建图像,这将图像大小扩大到 5 倍 3. 尝试 createimagefromstring 而不是 jpeg

我在想/想知道 - 如果我没有正确地抑制错误。- 是 gd 库而不是 imagick 的问题。我还没有添加imagick,但是可以,这似乎很痛苦-我可以尝试在另一个过程中调整大小,但这似乎只是在推迟问题

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

4

1 回答 1

1

我有同样众所周知的问题。在我的情况下,将 ini_set 添加为 index.php 的第一行不起作用。

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

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

注意 Exception 是命名空间的,所以你必须使用斜杠。

希望能帮助到你。

于 2016-03-09T11:27:44.107 回答