Laravel, вращающиеся изображения ожидают, что параметр является допустимым путем - PullRequest
0 голосов
/ 17 февраля 2020

Когда я загружаю изображения в базу данных, Laravel поворачивает их, поэтому я обнаружил, что Laravel поворачивает изображение при загрузке , после чего я получаю эту ошибку exif_read_data() expects parameter 1 to be a valid path, array given. Как я могу это исправить?

Контроллер

 if($request->hasFile('files')){

        $store_file = [];

        $exif = exif_read_data($request->file('files'));
        if(!empty($exif['Orientation'])) {
            switch($exif['Orientation']) {
                case 8:
                    $image = imagerotate($image,90,0);
                    break;
                case 3:
                    $image = imagerotate($image,180,0);
                    break;
                case 6:
                    $image = imagerotate($image,-90,0);
                    break;
            }
        }


       // $files = $request->file('files');
        foreach ($exif as $file) {
            $path = $file->storeAs('public/photos');

            $store_file[] = [

                'product_id' => $product->id,
                'filename' =>  $path
            ];
        }

1 Ответ

1 голос
/ 17 февраля 2020

По мере возникновения ошибки exif_read_data() expects parameter 1 to be a valid path, array given.

Вы должны указать путь к изображению от хранилища до функции exif_read_data(), что означает, что вам нужно l oop через $ request-> file ('files') и получить путь к хранилищу с помощью

$path = $file->store('public/photos');

Затем

exif_read_data($path); 

Исправить

if($request->hasFile('files')){

    $store_file = [];

    foreach ($request->file('files') as $file) {

        $fileName = uniqid() . time() . '.' . $file->getClientOriginalExtension();

        $file->storeAs('public/photos', $fileName);

        $filePath = $file->getPathName();

        $exif = @exif_read_data($filePath);

        if(isset($exif['Orientation'])) {

            switch($exif['Orientation']) {
                case 8:
                    $deg = 90;
                    break;
                case 3:
                    $deg = 180;
                    break;
                case 6:
                    $deg = -90;
                    break;
            }

            if (isset($deg)) {

                $fullQualifiedFilePath = storage_path('app/public/photos/' . $fileName);

                if ($file->getClientOriginalExtension() == "png") {
                    $img_new = imagecreatefrompng($fullQualifiedFilePath);
                    $img_new = imagerotate($img_new, $deg, 0);

                    imagepng($img_new, $fullQualifiedFilePath);
                } else {
                    $img_new = imagecreatefromjpeg($fullQualifiedFilePath);
                    $img_new = imagerotate($img_new, $deg, 0);

                    imagejpeg($img_new, $fullQualifiedFilePath, 80);
                }
           }
       }

        $store_file[] = [

            'product_id' => $product->id,
            'filename' =>  'public/photos/' . $fileName
        ];
    }

    ProductsPhoto::insert($store_file);
}

Ссылка Как выполнить вращение изображение с PHP (Laravel)

...