gpt4 book ai didi

iphone - iOS 图像方向有奇怪的行为

转载 作者:IT老高 更新时间:2023-10-28 11:21:22 24 4
gpt4 key购买 nike

在过去的几周里,我一直在使用 Objective-c 处理图像,并注意到许多奇怪的行为。首先,像许多其他人一样,我遇到了这样的问题:用相机拍摄的图像(或用别人的相机拍摄并发送给我的彩信)旋转了 90 度。我不确定为什么会发生这种情况(因此 my question),但我能够想出一个便宜的解决方法。

我这次的问题是为什么会发生这种情况 ?苹果为什么要旋转图像?当我用相机正面朝上拍照时,除非我执行上面提到的代码,否则当我保存照片时,它会旋转保存。现在,直到几天前,我的解决方法还可以。

我的应用程序修改了图像的单个像素,特别是 PNG 的 alpha channel (因此对于我的场景,任何 JPEG 转换都会被抛出窗口)。几天前,我注意到即使由于我的解决方法代码,图像在我的应用程序中正确显示,当我的算法修改图像的单个像素时,它认为图像已旋转。所以不是修改图像顶部的像素,而是修改图像侧面的像素(因为它认为应该旋转)!我不知道如何在内存中旋转图像 - 理想情况下,我宁愿抹掉那个 imageOrientation一起标记。

这里还有一些让我感到困惑的东西......当我拍照时,imageOrientation设置为 3。我的解决方法代码足够聪明,可以实现这一点并将其翻转,以便用户永远不会注意到。此外,我将图像保存到库的代码实现了这一点,翻转它,然后保存它,使其正确出现在相机胶卷中。

该代码如下所示:

NSData* pngdata = UIImagePNGRepresentation (self.workingImage); //PNG wrap 
UIImage* img = [self rotateImageAppropriately:[UIImage imageWithData:pngdata]];
UIImageWriteToSavedPhotosAlbum(img, nil, nil, nil);

当我将这个新保存的图像加载到我的应用程序中时, imageOrientation是 0 - 正是我想看到的,我的旋转解决方法甚至不需要运行(注意:当从互联网加载图像而不是用相机拍摄的图像时, imageOrientation 始终为 0,从而完美行为)。出于某种原因,我的保存代码似乎抹去了这个 imageOrientation旗帜。我希望只要用户拍照并将其添加到应用程序中,就可以窃取该代码并使用它来删除我的 imageOrientation ,但它似乎不起作用。是否 UIImageWriteToSavedPhotosAlbumimageOrientation 做一些特别的事情?

解决此问题的最佳方法是将其吹走 imageOrientation一旦用户完成拍摄图像。我认为 Apple 执行旋转行为是有原因的,对吗?一些人认为这是 Apple 的缺陷。

(...如果你还没有迷路...注2:当我拍横向照片时,一切似乎都完美无缺,就像从互联网上拍摄的照片一样)

编辑:

以下是一些图像和场景的实际外观。根据目前的评论,这种奇怪的行为似乎不仅仅是 iPhone 的行为,我认为这很好。

这是我用手机拍摄的照片(注意正确的方向),它与我拍摄照片时在手机上显示的完全一样:

Actual Photo taken on iPhone

这是我通过电子邮件发送给自己后 Gmail 中的图像(看起来 Gmail 处理得当):

Photo as it appears in Gmail

这是图像在 Windows 中作为缩略图的样子(看起来处理不当):

Windows Thumbnail

这是使用 Windows 照片查看器打开时实际图像的样子(仍然没有正确处理):

Windows Photo Viewer Version

在对这个问题的所有评论之后,这就是我的想法...... iPhone 拍摄了一张图像,并说“要正确显示它,它需要旋转 90 度”。此信息将在 EXIF 数据中。 (为什么它需要旋转 90 度,而不是默认为直线垂直,我不知道)。从这里开始,Gmail 足够智能,可以读取和分析 EXIF 数据,并正确显示它。然而,Windows 不够智能,无法读取 EXIF 数据,因此显示图像 不当 .我的假设正确吗?

最佳答案

我对它进行了研发并发现,每个图像文件都有元数据属性。如果元数据指定了通常被其他操作系统(但 Mac 除外)忽略的图像的方向。大多数拍摄的图像都将其元数据属性设置为直角。所以 Mac 以 90 度旋转的方式显示它。您可以在 Windows 操作系统中以正确的方式看到相同的图像。

有关更多详细信息,请阅读此答案 http://graphicssoft.about.com/od/digitalphotography/f/sideways-pictures.htm

尝试在此处阅读图像的 exif http://www.exifviewer.org/ , 或 http://regex.info/exif.cgi , 或 http://www.addictivetips.com/internet-tips/view-complete-exif-metadata-information-of-any-jpeg-image-online/

关于iphone - iOS 图像方向有奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10600613/

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