上传到服务器后,宽度和高度值会自动交换。 [PHP]
Width and Height values are automatically swapped after uploading to server. [PHP]
我使用这个函数 getimagesize($file_tmp_name)
来获取我上传的图片的宽度和高度。
该函数返回一个二维数组:$width = arr[0]
和 $height = arr[1]
;
在我的电脑上,图像尺寸为:3024 x 4032(宽 x 高)
但是在服务器端,图像的宽度和高度值是交换的。 4032 x 3024(宽 x 高)
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
我不确定是什么原因造成的,我怎样才能使它保持一致。感谢您的帮助。
您可以查看 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
?>
我使用这个函数 getimagesize($file_tmp_name)
来获取我上传的图片的宽度和高度。
该函数返回一个二维数组:$width = arr[0]
和 $height = arr[1]
;
在我的电脑上,图像尺寸为:3024 x 4032(宽 x 高) 但是在服务器端,图像的宽度和高度值是交换的。 4032 x 3024(宽 x 高)
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
我不确定是什么原因造成的,我怎样才能使它保持一致。感谢您的帮助。
您可以查看 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
?>