如何在上传文件后将iPhone图像旋转90度

时间:2016-09-08 13:31:38

标签: php android mysql iphone ionic-framework

我尝试上传图片并在我的应用上显示图片。我使用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有问题。如果有人对如何解决这个问题有任何建议我会很感激。感谢。

0 个答案:

没有答案