【问题标题】:Google app engine Image GIF execute_transforms LargeImageError谷歌应用引擎图像 GIF 执行转换大图像错误
【发布时间】:2014-06-04 12:47:07
【问题描述】:

我正在使用 GAE Image 服务调整各种图像的大小,如下所示:

from google.appengine.api images
img = images.Image(image_data=get_file_content(image_file_path))
img.resize(width=600)
thumbnail_data = img.execute_transforms(output_encoding=images.JPEG)

它工作正常,但对于动画 GIF 图像,execute_transforms 引发 LargeImageError。图像大小为 143KB,分辨率为 607x571px。这发生在 GAE 中,但不在我的本地开发服务器中。

Images Python API Overview 中表示图像不得大于 32 兆字节。但事实并非如此。

【问题讨论】:

  • 尝试一个非常小的动画 GIF(即 5x5 像素)。看看你是否得到同样的错误。
  • TBH 如果它能无缝转换动画 gif,我会感到惊讶...
  • @AndreiVolgin 我已经尝试过这个 40x40 图像fossies.org/linux/www/jquery-ui-1.10.4.custom.zip/… 并且在 GAE 中转换图像没有错误,但会产生完全黑色的图像,而在本地开发服务器中会产生正确的图像。然后我尝试了这张图片forums.autodesk.com/autodesk/attachments/autodesk/120/34295/1/…,结果在两种情况下都很好。
  • @PaulCollingwood 本地开发服务器可以毫无问题地缩放 GIF。但无论如何,如果 GIF 图像不兼容,那么为什么会引发 LargeImageError 错误? GAE 文档不应该说 GIF 不兼容吗?
  • @PaulCollingwood 在 GAE 文档中说动画 GIF 是兼容的 developers.google.com/appengine/docs/python/images/…

标签: python image google-app-engine python-imaging-library


【解决方案1】:

这对我来说似乎是一个合法的错误。图像服务可能会以某种方式将动画 GIF 中的所有帧都视为单个图像,超过了大小限制。

请注意,黑色图像不是错误。 JPEG 不支持透明度:

transparent_substitution_rgb

如果不支持透明像素 在目标图像格式中,默认替换为黑色。 您可以用另一种替换替换此默认颜色 以 32 位 RGB 格式指定它。

【讨论】:

    【解决方案2】:

    这确实是一个错误,是众多图像服务错误/缺点之一,我怀疑图像服务的重大改进应该正在进行中,它已经落后于最新的分辨率改进/视网膜屏幕等。

    请给 this issue 加注星标 - 当很多人为某个问题加注星标时,他们会解决问题,我还在问题跟踪器上链接了这个问题

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多