Google App Engine 图像 GIF execute_transforms LargeImageError

3 投票
2 回答
564 浏览
提问于 2025-04-18 08:34

我正在使用GAE图像服务来调整各种图片的大小,代码大致是这样的:

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,分辨率是607x571像素。在GAE上会出现这个问题,但在我本地的开发服务器上却没有。

Images Python API Overview中提到,图像的大小必须小于32兆字节。但实际上并不是这样。

2 个回答

0

这确实是个bug,属于图片服务的一系列问题和不足。我觉得图片服务应该会有一次大的改进,因为它跟不上最新的分辨率提升和视网膜屏幕等技术的发展。

请给这个问题点个星星——当很多人给一个问题点星星时,他们会去修复它。我也把这个问题的链接放在了问题追踪器上。

1

我觉得这看起来像是一个真实的错误。可能是图像服务把动图中的所有帧都当成一张图片来处理,结果超出了大小限制。

需要注意的是,黑色图像并不是一个错误。JPEG格式不支持透明:

transparent_substitution_rgb

如果目标图像格式不支持透明像素,默认情况下会用黑色来替代。你可以通过指定32位RGB格式来替换这个默认颜色。

撰写回答