我尝试上传图片并在我的应用上显示图片。我使用Javascript(angularjs),并且我使用PHP进行图像旋转。当我使用Android设备上传图像时,图像完全正常但是当使用iPhone时,图像总是旋转90度。我找了一段时间的解决方案,但我找不到一个。现在我正试图在我的服务器上使用PHP进行图像旋转,它仍可以正常使用android。我最初从图片中提取exif方向数据,并尝试根据返回的值旋转它。
以下是我使用的代码示例。
require '../db.php';
function compress_image($source_url, $destination_url, $quality) {
$image = imagecreatefromjpeg($source_url);
$exif = exif_read_data($source_url);
if($image && $exif && isset($exif['Orientation'])){
$ort = $exif['Orientation'];
echo 'exif data available';
if($ort == 6 || $ort == 5){
$image = imagerotate($image, 270, null);
}
if($ort == 3 || $ort == 4){
$image = imagerotate($image, 180, null);
}
if($ort == 8 || $ort == 7){
$image = imagerotate($image, 90, null);
}
if($ort == 5 || $ort == 4 || $ort == 7){
imageflip($image, IMG_FLIP_HORIZONTAL);
}
}
imagejpeg($image, $destination_url, $quality);
}
$imgname = $_FILES["file"]['name'];
$image = $_FILES["file"]['tmp_name'];
$userid = $_POST["userid"];
$postid = $_POST["postid"];
compress_image($image, "../uploads/".$imgname, 50);
$query="insert into photos (user_id,post_id,photoname) values ($userid,$postid,'$imgname')";
$result = mysqli_query($conn,$query);
mysqli_close($conn);
echo 'success';
由于这对iPhone不起作用(图片仍然保持侧面),然后我想检查是否至少旋转工作。
所以我最终使用了这个PHP代码
require '../db.php';
function compress_image($source_url, $destination_url, $quality) {
$image = imagecreatefromjpeg($source_url);
$image = imagerotate($image, 270, null);
imagejpeg($image, $destination_url, $quality);
}
$imgname = $_FILES["file"]['name'];
$image = $_FILES["file"]['tmp_name'];
$userid = $_POST["userid"];
$postid = $_POST["postid"];
compress_image($image, "../uploads/".$imgname, 50);
$query="insert into photos (user_id,post_id,photoname) values ($userid,$postid,'$imgname')";
$result = mysqli_query($conn,$query);
mysqli_close($conn);
echo 'success';
通过使用这段代码,我确信图片至少会旋转270度,但图片根本没有显示,但奇怪的是,当我使用我的机器人上传图像时,它确实旋转了设备。它只是iPhone有问题。如果有人对如何解决这个问题有任何建议我会很感激。感谢。