我可以使用内置的图像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服务吗?
答案 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 PIL或pillow。get_serving_url()方法允许您生成固定的, 存储在Blobstore中的图像的专用URL。
注意:我实际上没有尝试过,答案完全基于文档。