Я пытаюсь создать изображения / user_avatars с панелью администратора Laravel Nova и с API.Мне нужно создать 3 картинки для каждой загрузки - аватар, миниатюру и предварительный просмотр.
public function fields(Request $request)
{
return [
//some fields else
Avatar::make(__('Profile Photo'), 'avatar_path')
->path('images/users/avatars')
->storeAs(function (Request $request){
$file = $request->file('avatar_path');
return $request->user()->id.'_'. sha1($file->getClientOriginalName()).'.'.$file->getClientOriginalExtension();
})
->preview(function ($value, $disk){
return $this->getCroppedAvatar($value, 'prev', 636);
})
->thumbnail(function ($value, $disk){
return $this->getCroppedAvatar($value, 'thumb', 64);
})
->disableDownload(),
В этом поле я использую следующий метод
public static function getCroppedAvatar($value, $type, $size)
{
$path = str_replace('avatars', $type , $value);
if ($value && !Storage::exists($value)) {
return null;
}
if ($value && is_file(Storage::path($path)) && !is_dir(Storage::path($path))) {
return Storage::url($path);
}
if ($value) {
Image::make(Storage::path($value))
->widen($size)->save(Storage::path($path));
Log::info('New preview is ' . Storage::path($path));
return Storage::url($path);
}
return null;
}
В этом случае работает Laravel Nova, но если я пытаюсь вызвать getCroppedAvatar из контроллера API, у меня естьошибка в строке Image :: make:
Unsupported image type. GD driver is only able to decode JPG, PNG, GIF or WebP files. {"userId":16,"exception":"[object] (Intervention\\Image\\Exception\\NotReadableException(code: 0): Unsupported image type. GD driver is only able to decode JPG, PNG, GIF or WebP files. at /var/www/tracker/vendor/intervention/image/src/Intervention/Image/Gd/Decoder.php:59)
Код на контроллере API
Storage::put($fileDirectory.'/'.$fileName, $image);
User::getCroppedAvatar($fileDirectory.'/'.$fileName,'prev', 636);
User::getCroppedAvatar($fileDirectory.'/'.$fileName,'thumb', 64);
В обоих случаях я использую файлы png и jpg.Значения аргумента одинаковы.Как я могу это исправить?Спасибо!