【问题标题】:Get bitmap orientation without using ExifInterface在不使用 ExifInterface 的情况下获取位图方向
【发布时间】:2016-04-14 19:34:10
【问题描述】:

我需要弄清楚如何从位图中获取方向。事情是 - 图像并不总是出现在设备上,所以我不能使用 ExifInterface 来获取方向信息。 不知何故,它总是以横向显示位图,而长度和宽度属性对我没有多大帮助。

有人知道如何在没有 ExifInterface 的情况下完成此操作吗?

我知道我可以将方向作为属性存储在数据库中,但如果有其他方式 - 我更喜欢那个。

提前致谢

编辑: 我应该补充一点 - 位图作为字节数组从站点下载,因此它可以在最终用户决定下载之前作为预览呈现给设备上的最终用户。希望这更有意义

【问题讨论】:

  • 如果图片不在设备上,你的应用和图片有什么关系?
  • 它是一个预览 - 用于可以下载的图像。
  • 好吧,如果设备上没有预览,那么您的应用对预览做了什么?你是在下载那个吗?如果是这样,请下载并使用ExifInterface 检查方向。
  • 我知道我可以下载它,并使用 ExifInterface 来获取方向 - 但 id 像预览一样呈现图像,原样.. 纵向或横向。我们正在讨论大量图片,因此最终用户不必下载每一张图片即可查看其实际外观。
  • "我从服务器下载位图作为字节数组" -- 如果 byte[] 是 JPEG 数据,您可以写入文件并使用 ExifInterface,也可以将其包装在流中并使用 code like this 获取 EXIF 数据。

标签: android bitmap rotation exif


【解决方案1】:

您还可以使用我的 metadata-extractor 库,它可以从多种图像类型中读取大量元数据,并且这样做非常有效。

Metadata metadata = ImageMetadataReader.readMetadata(stream);

【讨论】:

    【解决方案2】:

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

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

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

    • 这仅适用于您的预览图像为 JPEG 格式。如果它们是其他格式(例如 PNG),则 EXIF 标头将丢失。同样,如果是这种情况,您可能会解决此服务器端问题,例如让预览生成器根据原始的 EXIF 标头正确旋转图像。

    如果您没有Orientation EXIF 标头,并且您无法控制服务器,那么您几乎注定要失败。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-16
      • 1970-01-01
      • 1970-01-01
      • 2019-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-16
      相关资源
      最近更新 更多