求推荐个 Python 里面类似于 HTML 5 Canvas 的库
没学过 python,一直写 js 的。起因是表侄女要交 python 作业,帮她选了个 js 效果,然后准备改成 python 版,就是这个: http://sandbox.runjs.cn/show/5mq04f9k
周末对着 python 手册试着敲了下代码,现在求推荐个简单常用或者 API 手册比较齐全的库。
求推荐个 Python 里面类似于 HTML 5 Canvas 的库
5 回复
pil ?
要画图的话,matplotlib 是基础,但它的 API 跟 Canvas 不太像。
你要找“类似 Canvas”那种直接画线、画圆、控制像素的感觉,我推荐下面几个:
-
Pillow (PIL)
这个是图像处理库,但它有ImageDraw模块,能提供line()、rectangle()、ellipse()这些很底层的绘图方法。适合生成静态图片,不适合交互。from PIL import Image, ImageDraw img = Image.new('RGB', (400, 300), color='white') draw = ImageDraw.Draw(img) draw.rectangle([50, 50, 200, 150], outline='red', width=2) draw.ellipse([250, 100, 350, 200], fill='blue') img.save('output.png') -
pycairo
这是 Cairo 图形库的 Python 绑定,矢量绘图,功能强,能输出 PDF/SVG/PNG。它的 API 是“设置状态-画路径”这种模式,跟 Canvas 的moveTo、lineTo、stroke逻辑很像。import cairo surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, 400, 300) ctx = cairo.Context(surface) ctx.set_source_rgb(1, 0, 0) # 红色 ctx.rectangle(50, 50, 150, 100) ctx.stroke() surface.write_to_png('output_cairo.png') -
如果你要做交互式应用(窗口里画,能点能拖)
那得用 GUI 框架的绘图部分:- PyQt/PySide 里的
QPainter - tkinter 的 Canvas 控件(名字就叫 Canvas,但功能比 HTML5 的简单)
- pygame:做游戏用的,但它的
Surface和draw模块就是用来像素操作的,很直接。
- PyQt/PySide 里的
总结:要 Canvas 那种手感,优先试试 pycairo 或 Pillow 的 ImageDraw。
搜了下,这是个主要用来处理图片的库吧
The Tkinter Canvas Widget?
我看看,目前找了个叫 graphics 的库,貌似没有重绘方法

