PHP getimagesize()混合了宽度和高度
我使用一个PHP脚本上传图像,然后使用PHP的getImageSize()获取尺寸,然后根据图片方向(纵向或横向)对图像进行处理 然而(PHP版本5.4.12)在一些.jpg文件上,它得到了它们的高度和宽度,在一些(用iPhone拍摄)中,它交换了它们,认为肖像图片实际上是横向的。PHP getimagesize()混合了宽度和高度,php,orientation,getimagesize,Php,Orientation,Getimagesize,我使用一个PHP脚本上传图像,然后使用PHP的getImageSize()获取尺寸,然后根据图片方向(纵向或横向)对图像进行处理 然而(PHP版本5.4.12)在一些.jpg文件上,它得到了它们的高度和宽度,在一些(用iPhone拍摄)中,它交换了它们,认为肖像图片实际上是横向的。 它不仅发生在我的本地Wampserver上,也发生在远程服务器上(使用不同的PHP版本) 有人知道怎么做吗 1) 要修复此问题,请执行以下操作: 2) 找到解决问题的方法吗?有些相机在文件本身的元数据部分包含一个方向
它不仅发生在我的本地Wampserver上,也发生在远程服务器上(使用不同的PHP版本) 有人知道怎么做吗 1) 要修复此问题,请执行以下操作:
2) 找到解决问题的方法吗?有些相机在文件本身的元数据部分包含一个方向标记。这样,无论图片在原始数据中的方向如何,设备本身每次都可以以正确的方向显示 Windows似乎不支持读取此方向标记,而只是读取像素数据并按原样显示 一个解决方案是,在每张图片的基础上更改受影响图片元数据中的方向标记,或者 使用PHP的
exif\u read\u 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
?>
参考资料:
- (研究为什么会发生这种情况)
- (PHP代码)