Я использую пакет Intervention с Laravel 5.6, проблема, которую я получаю всякий раз, когда я загружаю файл, который мне был представлен с ошибкой Формат кодирования (tmp) не поддерживается. У меня также включено расширение gdd2. Это код, который я использовал.
public function store(Request $request)
{
$this->validate($request , [
'name' => 'required|unique:categories',
'description' => 'max:355',
'image' => 'required|image|mimes:jpeg,bmp,png,jpg'
]);
// Get Form Image
$image = $request->file('image');
$slug = str_slug($request->name);
if (isset($image))
{
$currentDate = Carbon::now()->toDateString();
$imageName = $slug.'-'.$currentDate.'-'.uniqid().'.'.$image->getClientOriginalExtension();
// Check if Category Dir exists
if (!Storage::disk('public')->exists('category'))
{
Storage::disk('public')->makeDirectory('category');
}
// Resize image for category and upload
$categoryImage = Image::make($image)->resize(1600,479)->save();
Storage::disk('public')->put('category/'.$imageName, $categoryImage);
// Check if Category Slider Dir exists
if (!Storage::disk('public')->exists('category/slider'))
{
Storage::disk('public')->makeDirectory('category/slider');
}
// Resize image for category slider and upload
$categorySlider = Image::make($image)->resize(500,333)->save();
Storage::disk('public')->put('category/slider/'.$imageName, $categorySlider);
}
else
{
$imageName = 'default.png';
}
$category = new Category();
$category->name = $request->name;
$category->slug = $slug;
$category->description = $request->description;
$category->image = $imageName;
$category->save();
Toastr::success('Category Saved Successfully','Success');
return redirect()->route('admin.category.index');
}






Для метода Intervention image спасти() требуется имя файла, чтобы он знал, в каком формате файла (jpg, png и т. д.) Сохранить ваше изображение.
Причина, по которой вы получаете сообщение об ошибке, заключается в том, что он не знает, в какой кодировке сохранить временный объект изображения (tmp).
Вот пример
->save('my-image.jpg', 90)
Также есть необязательный второй параметр, который контролирует качество вывода. Вышеуказанные результаты имеют качество 90%.
Вам не нужно использовать функцию save () в классе Intervention\Image, поскольку вы сохраняете файл на свой общедоступный диск через фасад Storage.
Просто замените строку
$categoryImage = Image::make($image)->resize(1600,479)->save();
с участием
$categoryImage = Image::make($image)->resize(1600,479)->stream();
чтобы избежать необходимости сохранять изображение во временной папке с расширением .tmp. Laravel Storage Facade будет обрабатывать поток, созданный Intervention\Image, и сохранять файл на общедоступном диске.
Где-то видел это, и у меня это сработало.
$image->save('foo' . $img->getClientOriginalExtension());
Метод Laravel Intervention image save () требует имени файла, чтобы он знал, в каком формате файла (jpg, png и т. д.) Сохранить ваше изображение.
$categoryImage = Image::make($image)->resize(1600,479)->save( $imageName,90);
Я решил это
Trimming my file path, i was using this script inside laravel Artisan Console.
$img->save(trim('public/uploads/images/thumbnails/'.$subFolder.'/'.$filename));
Скорее вы используете поток, который работает без ошибок
$categoryImage = Image::make($image)->resize(1600,479)->save();
изменить на
Image::make($image)->resize(1600, 479)->save(storage_path('app/public/category').'/'.$imagename);
$categorySlider = Image::make($image)->resize(500,333)->save();
Storage::disk('public')->put('category/slider/'.$imageName, $categorySlider);
изменить на
Image::make($image)->resize(500, 333)->save(storage_path('app/public/category/slider/') .$imagename);