Мой сайт может загружать фотографии, процесс хорошо работает на компьютере. Если я загружаю изображение через мобильный телефон вращается. Я видел, что это известная проблема, и у нее есть решение.
Я пробую одно из решений и получаю сообщение об ошибке при загрузке изображения в папку:
move_uploaded_file() expects parameter 1 to be string, resource given.
Это код, который я использую для поворота изображения:
$exif = exif_read_data($new_img['tmp_name']);
if (!empty($exif['Orientation'])) {
$file = imagecreatefromjpeg($new_img['tmp_name']);
switch ($exif['Orientation']) {
case 3:
$new_img['tmp_name'] = imagerotate($file, 180, 0);
break;
case 6:
$new_img['tmp_name'] = imagerotate($file, -90, 0);
break;
case 8:
$new_img['tmp_name'] = imagerotate($file, 90, 0);
break;
}
}
move_uploaded_file($new_img['tmp_name'], $UploadDirectory.$NewFileName )
Вы сохраняете возвращаемое значение imagerotate, как если бы это было имя файла.
$new_img['tmp_name'] = imagerotate($file, 180, 0);
Но это не так imagerotate возвращает ресурс.
Так что просто измените все эти строки:
$new_img['tmp_name'] = imagerotate($file, 180, 0);
с
imagerotate($file, 180, 0);
Я только что узнал imagerotate
существовала. Я не уверен, как именно это работает. Вам может понадобиться сохранить файл в какой-то момент.
Я изменил это на:
case 3:
$rotate = imagerotate($file, 180, 0);
imagejpeg($rotate,$new_img['tmp_name']);
break;