沃梦达 / 编程问答 / php问题 / 正文

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

PHP getimagesize() mixes up width and height(PHP getimageSize()混合了宽度和高度)

本文介绍了PHP getimageSize()混合了宽度和高度的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

但是(PHP版本5.4.12)在某些.jpg文件上,它获取的高度和宽度是真实的,而在某些(用iPhone拍摄)中,它交换它们,认为肖像图片实际上是横向的。
它不仅发生在我本地的Wampserver上,而且还发生在远程服务器上(使用不同的PHP版本)。

有谁知道怎么做

1)修复或
2)找到解决问题的方法?

推荐答案

某些摄像机在文件本身的元数据部分中包含方向标记。这样,无论原始数据中图片的方向如何,设备本身每次都可以以正确的方向显示图片。

Windows似乎不支持读取此方向标记,而只是读取像素数据并按原样显示。

解决方案是在每个图像的基础上更改受影响图片的元数据中的方向标签,或者

使用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
?>

引用:

  • https://stackoverflow.com/a/10601175/1124793(研究发生这种情况的原因)
  • http://php.net/manual/en/function.exif-read-data.php#110894(PHP代码)

这篇关于PHP getimageSize()混合了宽度和高度的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本文标题为:PHP getimageSize()混合了宽度和高度

基础教程推荐