首页 >后端开发 >php教程 >为什么不使用 PHP 的'exif_read_data”函数纠正 iPhone 和 Android 图像方向?

为什么不使用 PHP 的'exif_read_data”函数纠正 iPhone 和 Android 图像方向?

Barbara Streisand
Barbara Streisand原创
2024-10-28 06:57:02440浏览

Why are iPhone and Android image orientations not being corrected using PHP's `exif_read_data` function?

PHP read_exif_data 和调整方向

提供的代码尝试根据 EXIF 数据调整上传的 JPEG 图像的方向。但是,用户报告了来自 iPhone 和 Android 设备的图像问题。

代码分析

使用 exif_read_data 函数提取 EXIF 数据。 switch 语句检查特定方向并尝试相应地旋转图像。但是,提供的 EXIF 数据似乎不包含有效的方向值。

更新的代码

要解决此问题,我们可以使用更强大的方法来提取方向数据。这是代码的更新版本:

<code class="php">$exif = exif_read_data($upload_path . $newfilename, 'ANY_TAG');
$ort = $exif['IFD0']['Orientation'] ?? 1;</code>

EXIF 方向值

方向值的范围可以从 1 到 8,不同的值表示不同的旋转或翻转.

  • 1:水平(正常)
  • 3:180° CW 旋转
  • 6:90° CW 旋转
  • 8:90° CCW 旋转
  • 2:水平翻转
  • 4:垂直翻转
  • 5:水平翻转和 90° CW 旋转
  • 7:垂直翻转和 90°顺时针旋转

调整图像方向

有了正确的方向值,我们就可以根据需要调整图像:

<code class="php">switch ($ort)
{
    case 3: // 180 rotate left
        $image->imagerotate(-180, -1);
        break;

    case 6: // 90 rotate right
        $image->imagerotate(-90, -1);
        break;

    case 8:    // 90 rotate left
        $image->imagerotate(90, -1);
        break;
}</code>

其他注意事项

如果 EXIF 数据仍然不包含方向值或调整似乎不起作用,您可能需要查阅图像库的特定文档或考虑使用确定正确方向的替代方法。

以上是为什么不使用 PHP 的'exif_read_data”函数纠正 iPhone 和 Android 图像方向?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn