#laravel #intervention
#laravel #вмешательство
Вопрос:
Я пытаюсь сохранить измененную копию загруженного изображения, но вмешательство в изображение, похоже, не знает, в каком корневом каталоге начинать, или, может быть, только я знаю, как правильно его настроить.
Это мой код в 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 :(');
}
Ошибка, которую я получаю:
InterventionImageExceptionNotReadableException
Image source not readable
Я подозреваю, что это связано с тем, что я не на правильном пути, из-за этих строк из вышеприведенной функции:
// resize image
$path_thumb = Intervention::make("./storage/app/public/" . $path_thumb)->resize(300, 200);
$path_thumb->save();
И это настоящий хассель, работающий с явными путями при использовании git в качестве развертывания.
Ответ №1:
Вы можете создать изображение напрямую, как это:
$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)
Ответ №2:
использовать помощник storage()?
Intervention::make(storage_path('app/public/") . $path_thumb)