我的网站使用的是PHP 5.5.19 。
我允许用户使用他们的智能设备相机拍摄照片,然后使用PHP将同一图像上传到FTP服务器。
我面临的问题是图像方向的变化。
假设,如果用户以设备的“人像”方向拍摄照片并将同一张照片上传到FTP服务器,则上传的照片的方向应仅为“人像”,但在我的情况下,它已更改为“风景”,反之亦然。
为了解决这个问题,我编写了以下代码,但对我而言不起作用。 因此,在尝试了所有方法之后,我正在寻求您的帮助。
HTML代码:
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:MyServerCreds@52.237.5.85/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);
}
如果您需要有关我所面临问题的更多信息,请告诉我们。
谢谢。