По мере возникновения ошибки 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)