【问题标题】:Image exif data in google app engine谷歌应用引擎中的图像 exif 数据
【发布时间】:2012-06-28 14:49:21
【问题描述】:

在谷歌应用引擎开发环境中,我无法获取 exif 数据。我从这里跟随指南 https://developers.google.com/appengine/docs/python/images/imageclass

我已经在代码中完成了以下操作

def getResizedImage(self, image, imagemaxWidth, imagemaxHeight):
    img = images.Image(image_data=image)
    logging.error(img.get_original_metadata())

我只得到无。 img 对象很好,因为我可以执行 img.resize 等。我需要获取 Exif 信息。

更新:通过这样做,我能够获取元数据,

def getResizedImage(self, image, imagemaxWidth, imagemaxHeight):
    img = images.Image(image_data=image)
    img.rotate(0)
    img.execute_transforms()
    logging.error(img.get_original_metadata())

就像在文档中解释的那样,我得到了更“有限”的设置

{u'ImageLength': 480, u'ImageWidth': 640}

显然你在真实环境中得到了更大的设置,但我不知道为什么这不能成为 dev env 的特性。这很令人沮丧。只要我能获得 pyexiv2 级别的 exif 就可以了,但如果只是使用 PIL 就不够好。目前 PIL 提供的 exif 信息很少。

【问题讨论】:

    标签: python google-app-engine exif


    【解决方案1】:

    开发环境使用 PIL 来解释您所看到的。生产环境不使用 PIL,并且会为您提供镜像中的大部分标签。

    【讨论】:

    • 所以它在生产中不使用 PIL,这是一种解脱。 PIL 在读取 EXIF 方面表现严重。
    【解决方案2】:

    取自get_original_metadata的文档

    回报: 带有字符串键的dict。如果用 parse_metadata 调用了 execute_transform 为真,这本词典包含有关各种属性的信息 原始图像,例如尺寸、颜色配置文件和属性 来自 EXIF。 即使 parse_metadata 为 False 或图像没有任何元数据, 字典将包含一组有限的元数据,至少 'ImageWidth' 和 'ImageLength', 对应的尺寸 原始图像。 如果在成功之前调用它,它将返回 None 执行转换。

    您想将parse_metadata=True 传递给execute_transform 以获取更多元数据,包括exif 数据。

    另外,关于它返回 None 的底部说明解释了为什么你必须调用 execute_transforms 才能得到任何东西

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-17
      • 1970-01-01
      • 2014-07-05
      • 2014-10-21
      相关资源
      最近更新 更多