不使用ExifInterface获取位图方向

3
我需要找出如何从位图中获取方向。问题是 - 图像并不总是存在于设备上,所以我不能使用ExifInterface来获取方向信息。无论如何,它总是显示位图为横向,并且长度和宽度属性并没有帮助我很多。
有人知道如何在没有ExifInterface的情况下完成这个任务吗?
我知道我可以将方向存储为数据库中的属性,但如果有另一种方法 - 我更喜欢那种方法。
提前致谢
编辑: 我应该补充说明 - 位图作为字节数组从网站下载,因此它可以作为预览呈现给最终用户在设备上,在他实际决定下载之前。希望这样更有意义。

如果图像不在设备上,你的应用程序与图像有什么关系? - CommonsWare
这是一个预览 - 用于可以下载的图像。 - OneBigQuestion
如果预览不在设备上,你的应用程序会如何处理预览?你是在下载它吗?如果是这样,请下载并使用“ExifInterface”来检查方向。 - CommonsWare
我知道我可以下载它,并使用ExifInterface获取方向 - 但我希望预览呈现图像,就像它本来的样子一样.. 竖直或横向。我们正在谈论大量的图像,因此最终用户不应该下载每个图像以查看其实际外观。 - OneBigQuestion
1
我将位图作为字节数组从服务器下载。如果这个byte[]是JPEG数据,你可以写入文件并使用ExifInterface,或者将其包装在流中并使用类似于此的代码,以获取EXIF数据。 - CommonsWare
显示剩余6条评论
2个回答

2

您也可以使用我的metadata-extractor库,它可以从多种图像类型中读取大量元数据,并且在执行此操作时非常高效。

Metadata metadata = ImageMetadataReader.readMetadata(stream);

1

如果您有JPEG数据,可以尝试阅读EXIF头。您的选择如下:

在您的情况下,您可能会遇到一些问题:

  • 预览图像缺少EXIF标头是可能的,这取决于预览图像的创建方式。如果是这种情况,并且您控制预览创建过程,则可以在服务器端修复。

  • 仅当您的预览图像为JPEG格式时才有效。如果它们是其他格式(例如PNG),则EXIF标头将丢失。同样,如果是这种情况,您可以在服务器端解决,例如使预览生成器根据原始文件的EXIF标头正确旋转图像。

如果您没有Orientation EXIF标头,并且您无法控制服务器,则基本上无法解决。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接