Laravel,旋转图像要求参数是有效路径

Laravel, rotating images expects parameter to be a valid path

当我上传图片到数据库时 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
            ];
        }

由于提到的错误 exif_read_data() expects parameter 1 to be a valid path, array given

您必须提供从存储到 exif_read_data() 函数的图像路径,这意味着您需要遍历 $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);
}

参考How to do a rotation of an image with PHP (Laravel)