[大阪/横滨/德岛] 寻找基础设施/服务器端工程师!

[大阪/横滨/德岛] 寻找基础设施/服务器端工程师!

【超过500家企业部署】AWS搭建、运维、监控服务

【超过500家企业部署】AWS搭建、运维、监控服务

【CentOS的后继者】AlmaLinux OS服务器搭建/迁移服务

【CentOS的后继者】AlmaLinux OS服务器搭建/迁移服务

[仅适用于 WordPress] 云服务器“Web Speed”

[仅适用于 WordPress] 云服务器“Web Speed”

[便宜]网站安全自动诊断“快速扫描仪”

[便宜]网站安全自动诊断“快速扫描仪”

[预约系统开发] EDISONE定制开发服务

[预约系统开发] EDISONE定制开发服务

[注册100个URL 0日元] 网站监控服务“Appmill”

[注册100个URL 0日元] 网站监控服务“Appmill”

【兼容200多个国家】全球eSIM“超越SIM”

【兼容200多个国家】全球eSIM“超越SIM”

[如果您在中国旅行、出差或驻扎]中国SIM服务“Choco SIM”

[如果您在中国旅行、出差或驻扎]中国SIM服务“Choco SIM”

【全球专属服务】Beyond北美及中国MSP

【全球专属服务】Beyond北美及中国MSP

[YouTube]超越官方频道“美由丸频道”

[YouTube]超越官方频道“美由丸频道”

智能手机拍摄的图像面向未来的问题

与正文无关

你好。
我是Mandai,负责Wild 开发团队。

如今,用智能手机可以轻松拍摄出高质量的照片,单反相机变得越来越不受欢迎。

轻松拍摄儿童照片并将其保存在云端已变得司空见惯。

我将分享当系统处理此类图像时,由于某种原因发生方向未对齐的事件时该怎么办。

处理图像没有问题!

图像处理存在一些问题,但都很好。

由于我使用的是FuelPHP的上传模块

直接指定URL显示图片的时候没有问题,但是通过HTML标签加载的时候就反了……

那么就是图像本身的问题了! ?

与开发环境兼容的图像没有什么特别的问题,但是如果你从你的电脑上上传有这个问题的图像,它仍然会面向一个奇怪的方向。
仅当使用智能手机拍摄的 jpeg 图像时才会出现这种情况。

你是这个意思吗?我想知道是否是Exif信息导致了这个问题,所以我检查了Exif中是否有这样的信息。

如果您想使用 PHP 检查,请使用 exif_read_data 函数。

$exif = exif_read_data('/path/to/hogehoge.jpg');

然后,突然就出来了。

 array ( 'FileName' => 'hogehoge.jpg', 'FileDateTime' => 1478746964, 'FileSize' => 1510220, 'FileType' => 2, 'MimeType' => 'image/jpeg', 'SectionsFound' => 'ANY_TAG、IFD0、THUMBNAIL、EXIF、GPS'、'COMPUTED' => 数组 ('html' => 'width="2592" height="1936"'、'高度' => 1936、'宽度' => 2592 , 'IsColor' => 1, 'ByteOrderMotorola' => 1, 'ApertureFNumber' => 'f/2.4', 'Thumbnail.FileType' => 2, 'Thumbnail.MimeType' => 'image/jpeg',), '品牌' => 'Apple', '型号' => 'iPad mini 2', '方向' => 6, 'XResolution' => '72/1', 'YResolution' => '72/1', ' ResolutionUnit' => 2、'软件' => '9.3.2'、'日期时间' => '2016:10:10 15:52:37'、'YCbCrPositioning' => 1、'Exif_IFD_Pointer' => 206、' GPS_IFD_Pointer' => 1030, 'THUMBNAIL' => 数组 ( '压缩' => 6, 'XResolution' => '72/1', 'YResolution' => '72/1', 'ResolutionUnit' => 2, ' JPEGInterchangeFormat' => 1434、'JPEGInterchangeFormatLength' => 9014、)、'ExposureTime' => '1/1506'、'FNumber' => '12/5'、'ExposureProgram' => 2、'ISOSpeedRatings' => 32 , 'ExifVersion' => '0221', 'DateTimeOriginal' => '2016:10:10 15:52:37', 'DateTimeDigitized' => '2016:10:10 15:52:37', 'ComponentsConfiguration' = > '^A^B^C' '', '快门速度值' => '12045/1141', '光圈值' => '4845/1918', '亮度值' => '14471/1420' , 'ExposureBiasValue' => '0/1', 'MeteringMode' => 5, 'Flash' => 32, 'FocalLength' => '33/10', 'SubjectLocation' => ...(省略).. )

智能手机上的 Exif 信息记录得相当详细,包括图像尺寸、拍摄日期和时间、GPS(如果打开)、快门速度、F 值等。仅此一项就相当广泛。

我感觉信息太多了,但是我找到了我要找的数据……!

这就是“方向”部分。

 

根据方向信息校正图像旋转

当我寻找有关图像 Exif 信息的详细信息时,我找到了
日本电子信息技术工业协会的文档虽然极其详细,但也很考验读者的阅读理解能力。
您所要做的就是根据图像方向术语进行编码。

你明白吗?

所以,我列了一个清单。

我从来没有遇到过会被反转的图像,但从我在材料中读到的内容来看,它似乎会被完成。
数字1、3、6、8经常出现。从我拥有的图像来看,似乎 3 通常设置为风景,而 6 通常设置为肖像。
3 表示 180 度旋转,因此即使照片是水平拍摄的(因为这是风景照片),智能手机也会识别出照片是上​​下颠倒拍摄的。
(在 iPhone 上,左右 HOME 按钮是相反的。)
此外,6 表示旋转 90 度,图像方向为纵向,因此您可以看到智能手机是垂直握住的来拍照的。了解了这一点后,您所需要做的就是根据 Exif 信息旋转图像并保存。FuelPHP 的 Image 类可以轻松完成
旋转和翻转然而,要重写Exif信息,需要
PEL如果您不需要 Exif 信息,那么简单地根据方向信息旋转它并覆盖它可能是个好主意。请注意,如果您只进行轮换处理,而对Exif信息不进行编辑,您将无法收集到。就是这样。

方位值 更正
1 未处理就OK
2 水平翻转图像
3 将图像顺时针旋转 180 度
4 垂直翻转图像
5 将图像顺时针旋转90度并水平翻转
6 将图像顺时针旋转 90 度
7 将图像逆时针旋转90度并水平翻转
8 将图像逆时针旋转 90 度
如果您觉得这篇文章有帮助,请点赞!
1
加载中...
1 票,平均:1.00 / 11
1,127
X Facebook 哈特纳书签 口袋
[2025.6.30 Amazon Linux 2 支持结束] Amazon Linux 服务器迁移解决方案

[2025.6.30 Amazon Linux 2 支持结束] Amazon Linux 服务器迁移解决方案

[大阪/横滨] 积极招募基础设施工程师和服务器端工程师!

[大阪/横滨] 积极招募基础设施工程师和服务器端工程师!

写这篇文章的人

关于作者

万代洋一

我的主要工作是为社交游戏开发 Web API,但我也很幸运能够做很多其他工作,包括营销。
此外,我在 Beyond 中的肖像权被视为 CC0。