【发布时间】:2010-10-15 03:20:19
【问题描述】:
我想根据用户输入动态创建一个图形图像,然后将该图像呈现为 PNG 文件(或 jpg 或 gif,如果需要,但首选 PNG)。
这实际上是一个占星术应用程序;我想做的是在 PNG 中生成图表以供显示。
Python 或 Ruby 都可以;事实上,可用的库可能决定了我使用的语言。
更新
这是一个示例图片:
【问题讨论】:
我想根据用户输入动态创建一个图形图像,然后将该图像呈现为 PNG 文件(或 jpg 或 gif,如果需要,但首选 PNG)。
这实际上是一个占星术应用程序;我想做的是在 PNG 中生成图表以供显示。
Python 或 Ruby 都可以;事实上,可用的库可能决定了我使用的语言。
这是一个示例图片:
【问题讨论】:
查看Ruby-GD2 或 ImageMagick 或 GraphicsMagick 绑定。
【讨论】:
在 Python 中,您通常会使用 PIL,即 Python 图像库。除了最简单的任务之外,我从未将 PIL 用于任何其他任务,所以我不能说它在实践中的表现如何。
我会通过查看 its documentation,尤其是 documentation for the draw module 开始深入研究 PIL。
【讨论】:
也许矢量格式更适合您的需求,但如果没有具体示例说明您想要获得什么,就很难判断。
例如,如果图像都相似,您可以使用 Inkscape 创建一个 SVG 基础图像,然后从 Python 或 Ruby 以编程方式对其进行编辑(通过编辑文本或使用 XML 库),最后将其导出为 PNG。
更新: 看到示例图像后,我认为 SVG 将是最方便的选择。 SVG 图像是一个 XML 文件,基本上说“从这里到这里画一个圆圈,在那里写字符串 '13º52'”等。你可以在 Inkscape 中绘制一个独特的基本图表,让你的程序只添加线条和符号每个案例。最后导出为 PNG。
优点是:更容易绘制,图像完全可缩放,只需编辑属性即可更改样式(“使所有线条变宽”、“将所有文本更改为 Arial”、“将背景涂成蓝色"),您可以导出为任何格式而不会丢失质量,而且我认为它更具可维护性。
【讨论】:
我发现Gruff 很容易使用,当我在你的鞋子里。 Shameless blog plug.
【讨论】:
当我在做 python chalange (http://www.pythonchallenge.com/) 时,我使用了 Python Image Library (http://www.pythonware.com/library/pil/)
【讨论】:
对于 Python I,图像格式最常见的选择是 PIL,然后是 Pycairo 用于矢量格式。两者可以一起工作,例如在这个食谱条目中use PIL images for Pycairo surfaces。
【讨论】: