4

我们的应用程序使用图库选择操作从设备中抓取图像以上传到新的博客文章。我们在 Moto Droid 上看到纵向拍摄的图像以横向发送回应用程序,因此图像是横向的。AFAIK 这只发生在 Droid 上。

通过谷歌找到这个,但我们需要以正确的方向上传完整尺寸的图像,因此该解决方案对我们不起作用:

http://groups.google.com/group/android-developers/browse_frm/thread/1246475fd4c3fdb6?pli=1

重现这一点的一种简单方法是在 Droid 上拍摄一张纵向照片,然后通过 Gmail 将其发送给自己。在电子邮件消息中,图像将是横向的(横向)。我已经在 droid 2.1 更新上进行了测试,但问题仍然存在。

这里有更多信息:

我在 Photoshop 中查看了图像信息,它有这样一行:

<tiff:Orientation>1</tiff:Orientation>

该规范(http://www.awaresystems.be/imaging/tiff/tifftags/orientation.html)说 1 的值是:

1 = 第 0 行代表图像的视觉顶部,第 0 列代表视觉左侧。

在这种情况下,这不是不正确的吗?在我的例子中,图像的顶部是右侧,第 0 行是左侧,我认为 tiff 方向的值应该是“5”。

4

1 回答 1

2

我认为这可能是您的服务器代码中带有 EXIF 标签的错误。正如您所提到的,在我的 2.1 版 Droid 上,我以纵向模式拍摄了一张照片,并调查了保存的结果(例如,通过电子邮件发送给我自己)。在预览中打开文件时(在 Mac 上),它看起来是正确的。

使用方便的exif工具(port install exif在 Mac 上),我能够打印 EXIF 信息:

$ exif -t Orientation image.jpg 
EXIF entry 'Orientation' (0x112, 'Orientation') exists in IFD '0':
Tag: 0x112 ('Orientation')
  Format: 3 ('Short')
  Components: 1
  Size: 2
  Value: right - top

现在,如果您要删除 EXIF 信息,这可能是您的服务器/客户端通信中发生的情况:

$ exif --ifd=0 --tag=Orientation --set-value= -o image2.jpg image.jpg 
Wrote file 'image2.jpg'.

$ exif -t Orientation image2.jpg 
EXIF entry 'Orientation' (0x112, 'Orientation') exists in IFD '0':
Tag: 0x112 ('Orientation')
  Format: 3 ('Short')
  Components: 1
  Size: 2
  Value: 

生成的图像将处于横向模式。

所以,底线是我认为 Droid 总是在横向存储图像中的位,并依靠 EXIF 元数据来存储旋转信息(这是完全有效的),你的应用程序可能会丢弃这些信息

希望有帮助!随意评论或编辑原始问题以进一步排除故障。

于 2010-04-05T23:55:06.943 回答