gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 12:35:29 25 4
gpt4 key购买 nike

我使用上传图像的 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
?>

引用资料:

关于PHP getimagesize() 混淆了宽度和高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29301931/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com