在Google App Engine中替代PIL(ImageDraw)功能

5 投票
4 回答
1828 浏览
提问于 2025-04-15 12:55

所以,谷歌的应用引擎(Google App Engine)看起来暂时不会支持Python图像库,也没有什么新的消息。虽然有一个图像API,但功能非常有限,根本不能满足我的需求。

我在想有没有纯Python的解决方案(不使用C扩展),可以替代Image.paste和ImageDraw模块。我不想自己去写这些功能,不过这也是一个选择。如果有其他解决办法,比如“在别的地方处理好,然后通过API调用”,只要不是太丑的方案,我也是可以接受的。(说实话,我刚提到的方案对我来说看起来挺丑的。)

其他人是怎么解决这个问题的呢?

(我并不是特别依赖GAE,只是在探索这个选项,而这个问题对我的应用来说可能是个致命的缺陷。)

备注:

对我来说,裁剪和调整大小是不够的。特别是我需要:

  1. 粘贴(用另一张图替换掉图像的一部分……可以用“合成”来模拟)
  2. 绘图(比如画网格线等等,也可以模拟)
  3. 文本(在图像上写字,这个比较难模拟,除非有人想纠正我)

4 个回答

1

我不知道这个工具是否具备你想要的所有功能,但我最近在研究PNGCanvas,它能做一些我之前用PIL做过的事情。

2

你的想法不对。如果你使用的是Python 2.7的运行环境,你可以使用PIL(版本1.1.7),具体信息可以在这里找到:https://developers.google.com/appengine/docs/python/tools/libraries27。这篇文章还解释了如何在你的应用中启用PIL。

顺便提一下,你提到的那个bug的最后一条评论也提到了这个问题。

2

我的skimpygimpy.sourceforge.net可以用来绘图和显示文字,但它不能编辑已有的图片(当然,如果你愿意深入研究的话,可以对它进行修改)。它是纯Python写的。你可以在谷歌应用上看到它的运行效果,比如在这个链接:http://piopio.appspot.com/W1200_1400.stdMiddleware#Header51

这是一个我正在实验的网站,可能链接不会一直有效。

撰写回答