Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP getimagesize()混合了宽度和高度_Php_Orientation_Getimagesize - Fatal编程技术网

PHP getimagesize()混合了宽度和高度

PHP getimagesize()混合了宽度和高度,php,orientation,getimagesize,Php,Orientation,Getimagesize,我使用一个PHP脚本上传图像,然后使用PHP的getImageSize()获取尺寸,然后根据图片方向(纵向或横向)对图像进行处理 然而(PHP版本5.4.12)在一些.jpg文件上,它得到了它们的高度和宽度,在一些(用iPhone拍摄)中,它交换了它们,认为肖像图片实际上是横向的。 它不仅发生在我的本地Wampserver上,也发生在远程服务器上(使用不同的PHP版本) 有人知道怎么做吗 1) 要修复此问题,请执行以下操作: 2) 找到解决问题的方法吗?有些相机在文件本身的元数据部分包含一个方向

我使用一个PHP脚本上传图像,然后使用PHP的getImageSize()获取尺寸,然后根据图片方向(纵向或横向)对图像进行处理

然而(PHP版本5.4.12)在一些.jpg文件上,它得到了它们的高度和宽度,在一些(用iPhone拍摄)中,它交换了它们,认为肖像图片实际上是横向的。
它不仅发生在我的本地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代码)

您如何处理getimagesize的结果?您总是会得到一个较大的值和一个较小的值(方形图像除外),并且应该相应地工作。给我们看看你的代码,这会给我们带来问题。我也有同样的问题。我有PHP5.5的Wamp。这看起来像是PHP解释中的一个bug。有人找到了解决方案吗?我有完全一样的problem@EdwinKrause你说“你总是得到一个更大和更小的值”是什么意思?第一个值应该始终是宽度,我们谈论的是宽度/高度,而不是方向。否?图像方向错误将导致宽度/高度混淆。感谢您的回复。我已经检查了图像EXIF,但是图像方向是1,因此对我来说似乎没有错。非常感谢!当我手机上的照片被拍摄成人像时,getImageSize会将宽度和高度混为一谈。当我在肖像模式下使用daugthers手机上的照片时,它不会。所以我显示了方向,我所有的照片都是“6”,她的照片都是“1”。我不知道这意味着什么,但现在我知道什么时候该切换回值了!