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()混合了宽度和高度
基础教程推荐
猜你喜欢
- 在多维数组中查找最大值 2021-01-01
- 如何在 PHP 中的请求之间持久化对象 2022-01-01
- WooCommerce 中选定产品类别的自定义产品价格后缀 2021-01-01
- 超薄框架REST服务两次获得输出 2022-01-01
- 通过 PHP SoapClient 请求发送原始 XML 2021-01-01
- Libpuzzle 索引数百万张图片? 2022-01-01
- 在 PHP 中强制下载文件 - 在 Joomla 框架内 2022-01-01
- XAMPP 服务器不加载 CSS 文件 2022-01-01
- 在 Woocommerce 中根据运输方式和付款方式添加费用 2021-01-01
- mysqli_insert_id 是否有可能在高流量应用程序中返回 2021-01-01