я использую PHP 5.5.19 для моего сайта.
Я разрешаю пользователям фотографировать, используя камеру интеллектуального устройства, и загружать одно и то же изображение на FTP-сервер с помощью PHP.
Проблема, с которой я сталкиваюсь, связана с изменением ориентации изображения.
Предположим, если пользователь берет фотографию в ориентации своего устройства «Портрет» и загружает эту же фотографию на FTP-сервер, ориентация загруженной фотографии должна быть только «Портретной», но в моем случае она меняется на «Пейзаж» и наоборот. ,
Чтобы исправить эту проблему, я написал следующий код, но он не сработал для меня. Поэтому, попробовав все, я прошу вашей помощи.
HTML код:
<form id="request_form" method="post" class="form-horizontal" enctype="multipart/form-data" action="">
<input type="file" name="student_image" id="student_image" accept="image/*" capture/>
</form>
PHP-код:
if(!empty($_FILES['student_image']['name'])) {
$ext = pathinfo($_FILES['student_image']['name'], PATHINFO_EXTENSION);
$student_image_name = 'student_'.'.'.$ext;
$_POST['student_name'] = $student_image_name;
$ftp_server="52.237.5.85";
$ftp_user_name="myservercreds";
$ftp_user_pass="MyServerCreds";$file = $_FILES['student_image']['name'];//tobe uploaded
$remote_file = "/Students/".$_POST['student_name'];// set up basic connection
$conn_id = ftp_connect($ftp_server);
// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
// turn passive mode on
ftp_pasv($conn_id, true);
if($login_result) {
if(!is_dir('ftp://myservercreds:[email protected]/Students')) {
ftp_mkdir($conn_id, "/Students");
ftp_chmod($conn_id, 0777, '/Students');
}
if(!file_exists("/Students/".$student_image_name))
$file_upload_status = ftp_put($conn_id, $remote_file, $file, FTP_BINARY);
//Below is the code I've written to overcome this issue but unfortunately same thing is happening again
if($file_upload_status) {
$exif = exif_read_data($remote_file);
$ort = $exif['COMPUTED']['Orientation'];
switch($ort) {
case 3: // 180 rotate left
$image = imagecreatefromjpeg($remote_file);
$rotated = imagerotate($image, 180, -1);
break;
case 6: // 90 rotate right
$image = imagecreatefromjpeg($remote_file);
$rotated = imagerotate($image, -90, -1);
break;
case 8: // 90 rotate left
$image = imagecreatefromjpeg($remote_file);
$rotated = imagerotate($image, 90, -1);
break;
}
imagejpeg($rotated, $remote_file);
$success_message = 'Photo Successfully Uploaded';
}
}
// close the connection
ftp_close($conn_id);
}
Если вам нужна дополнительная информация о проблеме, с которой я столкнулся, пожалуйста, дайте мне знать.
Благодарю.
Я предполагаю, что вам нужно ftp_put после его поворота, -save localy — rotate, затем ftp put.
Других решений пока нет …