Почему проблема «Изменение ориентации изображения», которая захватывается с помощью камеры устройства и загружается на FTP-сервер, сохраняется в следующем сценарии?

0

Я использую 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
orientation
image-uploading
exif

1 ответ

1

Я предполагаю, что вам нужно ftp_put после его вращения, -save localy - повернуть, а затем положить ftp.

  • 0
    Но в чем проблема доступа к изображению с удаленного сервера и перезаписи его после поворота?
  • 1
    @PHPLover Ваш $ $ удаленный файл - это просто строка с путем, которая даже не указывает на вашу картинку вне контекста соединения. ваш код будет пытаться сохранить его локально по тому же пути (и, скорее всего, не удастся из-за chmod)
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню