Laravel 5.7 +干预图像:图像源不可读

时间:2019-01-30 06:20:05

标签: laravel laravel-5.2 laravel-5.7 intervention

我已经创建了一个可以上传图像以及标题,说明等的应用程序。但是,我在要上传的某些图像中遇到问题,它返回错误(“图像源不可读”),如图所示下方:

enter image description here

这是我的代码:

$image = $request->file('image');
// $image = Input::file('image'); // already tried this one still same problem

$orginal_filename = $image->getClientOriginalName();
$ext = $image->getClientOriginalExtension();
$fileName = md5(microtime() . $orginal_filename) . '.' . $ext;

$img = Image::make($image->getRealPath());
$img->stream();
$img->resize(1200, null, function ($constraint) {
    $constraint->aspectRatio();
}); 

Storage::disk('storage_dir')->put($dir . $fileName, $img, 'public');

已经尝试了以下解决方案:

  • 更改为Input :: file('file')
  • 检查“请求内容类型”是否具有多部分/表单数据(请求已具有多部分/表单数据“内容-类型”
  • 将干预图像驱动程序从“ gd”更改为“ imagick”

但仍然存在“无法读取图像源”错误。

注意:仅在某些图像中发生错误。 (我也曾尝试将图像(w / c产生错误)移动到另一个目录,但仍然发生错误)。

非常感谢您的帮助!

5 个答案:

答案 0 :(得分:1)

您可以尝试运行我的代码

if ($request->file('photo')->isValid()) {
        $avatar = $request->file('photo');

        $filename = time() . '.' . $avatar->getClientOriginalExtension();

        Image::make($avatar)->resize(300, 300)->save( public_path('/uploads/avatars/' . $filename) );

    }

/ uploads / avatars / 是我的目录

答案 1 :(得分:0)

抱歉打扰大家!似乎没有意识到php post_max_sizephp upload_max_file_size都是我的错。由于我试图上传大于8MB的图像,因此我只将post_max_size>比当前图像文件的大小增加,但没有将upload_max_file_size的原因增加2(表示为4MB)。 / p>

感谢btw的帮助和建议!

答案 2 :(得分:0)

如果问题出现在Laravel 5.7项目中,并且您将图片存储在存储文件夹中,则可以解决该问题,将其输入到终端中:

php artisan storage:link

(如果您已经从github og bitbucket克隆了项目,则会出现问题)

答案 3 :(得分:0)

替换

otherProps

$resize = Image::make('storage/app/public/'.$user->image)->resize(300,300);

给出存储完整路径即可解决问题。

答案 4 :(得分:0)

如果您在服务器上遇到此错误,则需要确保将所有图像推送到服务器。由于服务器无法找到或读取图像/图像,您正面临此错误。

-> 确保图片/图片已上传
-> 使图像/图像可读。