上传到服务器后,将自动交换宽度和高度值。 [PHP]

时间:2016-10-09 17:27:46

标签: php image-processing gd dimensions getimagesize

我使用此函数getimagesize($file_tmp_name)来获取我上传的图片的宽度和高度。 该函数返回了一个2D数组:$width = arr[0]$height = arr[1];

enter image description here

在我的电脑上,图像尺寸为:3024 x 4032(宽x高) 但在服务器端,图像宽度和高度值是交换的。 4032 x 3024(w x h)

 var_dump($width); // C:\wamp64\www\upload_script\Image.php:89:int 4032
 var_dump($height); // C:\wamp64\www\upload_script\Image.php:90:int 3024

我不确定是什么造成了这种情况,我怎样才能使其保持一致。我感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

您可以在php手册中查看exif_read_data功能的第一条评论。

从那里复制代码:

<?php
$image = imagecreatefromstring(file_get_contents($_FILES['image_upload']['tmp_name']));
$exif = exif_read_data($_FILES['image_upload']['tmp_name']);
if(!empty($exif['Orientation'])) {
    switch($exif['Orientation']) {
        case 8:
            $image = imagerotate($image,90,0);
            break;
        case 3:
            $image = imagerotate($image,180,0);
            break;
        case 6:
            $image = imagerotate($image,-90,0);
            break;
    }
}
// $image now contains a resource with the image oriented correctly
?>