如何选择图像干预应该存储图像?

问题描述

我正在尝试保存已上传图像的调整大小的副本,但 Image Interventions 似乎不知道从哪个根目录开始,或者只有我不知道如何正确配置它。

>

这是我在 AvatarImageController@store 中的代码

public function store(Request $request,Game $game)
{
    if ($request->hasFile('game_image')) {
        $request->validate([
            'game_image' => 'mimes:jpeg,png|max:1014'
        ]);

        $file = $request->file('game_image');
        $filename_thumbnail = "thumb_". $file->hashName();
        $path_full = $request->file('game_image')->store('images/test_folder');
        $path_thumb = $request->file('game_image')->storeAs('images/test_folder/thumbs',$filename_thumbnail);

        // resize image
        $path_thumb = Intervention::make("./storage/app/public/" . $path_thumb)->resize(300,200);
        $path_thumb->save();

        $image = new Image;
        $image->full = basename($path_full);
        $image->thumb = $filename_thumbnail;

        $game->images()->save($image);
        
        return back()->with('success',"Success!! Image uploaded.");
    }else{
        return back()->with('success','Ooops.. something went wrong.');
    }
    abort(500,'Could not upload image :(');
}

我收到的错误

Intervention\Image\Exception\NotReadableException
Image source not readable

我怀疑这是因为我不在正确的路径中,因为上面函数中的这些行:

    // resize image
    $path_thumb = Intervention::make("./storage/app/public/" . $path_thumb)->resize(300,200);
    $path_thumb->save();

当使用 git 作为部署时,使用显式路径是一个真正的麻烦。

解决方法

你可以像这样直接制作图像:

$uploadedFile = $request->file('game_image'); 
$image = Image::make($uploadedFile);

调整大小:

$image = $image->resize(300,200);

并像这样保存:

$image_data = $image->encode('jpg')->__toString();
$relative_file_path = 'images/test_folder/';
Storage::put($relative_file_path,$image_data)
,

使用 storage() 助手?

Intervention::make(storage_path('app/public/") . $path_thumb)