从AppEngine(Python)服务GIF

时间:2016-12-11 12:17:35

标签: google-app-engine gif

我可以使用内置的图像API从我的python app引擎应用程序提供图像(jpeg),没有问题,如下所示:

result = img.execute_transforms(output_encoding=images.JPEG)
self.response.headers['Content-Type'] = 'image/jpeg'
self.response.out.write(result)

但这不适用于GIF。以下

result = img.execute_transforms(output_encoding=images.GIF)
self.response.headers['Content-Type'] = 'image/gif'
self.response.out.write(result)

结果为Output encoding type not in recognized set frozenset([0, 1, 2])

查看documentation(靠近顶部),我发现:

JPEG = images_service_pb.OutputSettings.JPEG
PNG = images_service_pb.OutputSettings.PNG
WEBP = images_service_pb.OutputSettings.WEBP
BMP = -1
GIF = -2
ICO = -3
TIFF = -4

OUTPUT_ENCODING_TYPES = frozenset([JPEG, PNG, WEBP])

这是否意味着python图像api目前不支持Serving GIF?如果是这样,还有另一种方法从python app引擎应用程序提供GIF服务吗?

1 个答案:

答案 0 :(得分:1)

  

这是否意味着服务GIF目前不受支持   python图片api?

是。由实际产生您遇到的错误的代码段确认,进一步在您引用的同一文档页面上execute_transforms_async()内:

    if output_encoding not in OUTPUT_ENCODING_TYPES:
      raise BadRequestError("Output encoding type not in recognized set "
                            "%s" % OUTPUT_ENCODING_TYPES)
  

如果是这样,还有另一种方法可以从python app引擎提供GIF服务   应用?

是的,您可以使用GAE提供的PIL library代替(GAE中仅提供1.1.7版本)。

来自Using get_serving_url()(强调我的):

  

除了Images API之外,您还可以使用 Python 2.7应用程序中Python Imaging Library(PIL)中提供的转换。   为此,请在库的libraries部分声明库   app.yaml个文件。但是,如果您希望在当地使用PIL   环境(使用开发服务器)您还必须在本地download and install PILpillow

     

get_serving_url()方法允许您生成固定的,   存储在Blobstore中的图像的专用URL。

注意:我实际上没有尝试过,答案完全基于文档。