2014-12-08 2 views
0

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

Я разрешаю пользователям фотографировать, используя камеру смарт-устройства и загружая одно и то же изображение на 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); 
} 

Если вам нужна дополнительная информация по этому вопросу я сталкиваюсь, пожалуйста, дайте мне знать.

Спасибо.

ответ

1

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

+0

Но какова проблема с доступом к изображению с удаленного сервера и перезаписью его после вращения? – PHPLover

+1

@PHPLover Ваш $ удаленный файл просто строковый с контуром, который даже не указывает на ваше изображение вне контекста соединения. ваш код попытается сохранить его локально на том же пути (и, скорее всего, не удалось из-за chmod) – StormRideR

+0

Я пробовал ваш трюк хранения изображения локально сначала, а затем на FTP-сервере. Тем не менее это результат. – PHPLover

Смежные вопросы