Intervention \ Image \ Exception \ NotSupportedException Формат кодирования (tmp) не поддерживается - PullRequest
0 голосов
/ 27 апреля 2018

Я использую пакет 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');
    }

Ответы [ 4 ]

0 голосов
/ 12 марта 2019

Для метода save () изображения Laravel Intervention требуется имя файла, чтобы он знал, в каком формате (jpg, png и т. Д.) Сохранить изображение в

 $categoryImage = Image::make($image)->resize(1600,479)->save( $imageName,90);
0 голосов
/ 08 июня 2018

Вам не нужно использовать функцию save () в классе Intervention\Image, поскольку вы сохраняете файл на общедоступном диске через Storage Facade.

Просто замените строку

$categoryImage = Image::make($image)->resize(1600,479)->save();

с

$categoryImage = Image::make($image)->resize(1600,479)->stream();

во избежание необходимости сохранять изображение во временной папке с расширением .tmp. Laravel Storage Facade будет обрабатывать поток, созданный Intervention\Image, и сохранять файл на общедоступном диске.

0 голосов
/ 05 декабря 2018

Увидел это где-то, и у меня это сработало

$image->save('foo' . $img->getClientOriginalExtension());
0 голосов
/ 27 апреля 2018

Метод изображения Intervention save () требует имя файла, чтобы он знал, в каком формате (jpg, png и т. Д.) Сохранить изображение.

Причина, по которой вы получаете ошибку, состоит в том, что она не знает, какую кодировку сохранить для временного объекта изображения (tmp) in.

Вот пример

->save('my-image.jpg', 90)

Существует также дополнительный второй параметр, который контролирует качество вывода. Вышеуказанные выходы с качеством 90%.

http://image.intervention.io/api/save

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...