我想根据用户的输入即时生成一个图像,并将该图像呈现为PNG文件(如果需要,也可以是jpg或gif,但优先选择PNG)。
实际上,这是一款占星应用程序;我想生成PNG格式的图表进行显示。
Python或Ruby都可以;事实上,可用的库可能会决定我使用的编程语言。
![示例星座图表](https://upload.wikimedia.org/wikipedia/commons/thumb/4/42/Astrological_Chart_-_New_Millennium.JPG/400px-Astrological_Chart_-_New_Millennium.JPG)
实际上,这是一款占星应用程序;我想生成PNG格式的图表进行显示。
Python或Ruby都可以;事实上,可用的库可能会决定我使用的编程语言。
也许矢量格式更适合你的需求,但如果没有具体的示例,很难确定。
例如,如果图像都是相同的,您可以使用Inkscape创建一个SVG基本图像,然后从Python或Ruby进行编程式编辑(通过编辑文本或使用XML库),最后将其导出为PNG。
更新: 看了示例图像后,我认为SVG是最方便的选择。 SVG图像是一个XML文件,基本上说“从这里到这里画一个圆圈,在那里写上'13º52'”等。 您可以在Inkscape中绘制唯一的基础图表,并让您的程序仅添加每种情况下的线条和符号。 最后,您可以导出为PNG。
优点是:更容易绘制,图像完全可缩放,您可以通过编辑属性轻松更改样式(“使所有线条更宽”,“将所有文本更改为Arial”,“将背景涂成蓝色”),您可以导出到任何格式而不失去质量,并且我认为它更易于维护。
对于Python而言,在图像格式方面最常用的选择是PIL,而在矢量格式方面则是Pycairo。这两种工具可以一起使用,例如在这个菜谱条目中使用PIL图像作为Pycairo表面的方法。
当我在做Python挑战(http://www.pythonchallenge.com/)时,我使用了Python图像库(http://www.pythonware.com/library/pil/)