Pycairo、cairocffi和Qahirah对比

3
我想在Python中创建和光栅化矢量图形。我怀疑Pycairocairocffi(编辑:或Qahirah)是一个很好的选择。(如果不是,请留言。) 这两者之间的实际区别是什么? 具体来说,Pycairo documentation说:

如果Pycairo不是你需要的,请看一下cairocffi,它是一个使用cffi的API兼容包,或者使用ctypes的Qahirah,它提供了一个更“Pythonic”的API,更少关注匹配cairo C API。

但是这引发了一些问题:在什么情况下,Pycairo可能不是你需要的选择,而cairocffi却是? cffi / Qahirah / ctypes 在哪些方面比Pycairo更好? Pycairo有哪些不符合“Pythonic”的地方? 如果cairocffi比Pycairo更好,为什么Pycairo更受欢迎,它是否有优势?
编辑:上面的引用中可能缺少一个逗号,这不是关于“Pycairo vs. cairocffi”的问题,而是关于“Pycairo vs. cairocffi vs. Qahirah”的问题。
1个回答

3

紧密模仿 C API 意味着函数使用简单的参数。例如,move_to 函数/方法如下:

ctx.move_to(x: float, y: float)→ None

如果你想在你的程序中使用(x,y)点或向量,那么有一点会让你感到烦恼,比如需要写出move_to(P[0], P[1])而不是只需要写move_to(P)
在Qahirah中,你可以这样写:
p = Vector(x, y)
ctx.move_to(p)

或者也许

ctx.move_to(Vector(x, y))

甚至更多
ctx.move_to((x, y))

你可以将C API看作是一个基础层,上面可以构建更方便的API。

一如既往,这是一个权衡。使用直接风格的C API可能会更快(但并不太多)。

有关更多信息,请查阅Qahirah的README。

https://github.com/ldo/qahirah 

再说一遍——如果您找到了一个使用C语言的开罗教程,直接使用C API可能会更容易。

尝试两种方法,看看哪个更适合您。


谢谢!为了澄清:您的回答是否将Qahirah与Pycairo进行比较?如果cairocffi在这方面类似于Pycairo,那么它与Pycairo有何不同? - root
1
如果你在Github上搜索“Pycairo”和“Qahirah”,你会发现“Pycairo”被很多项目使用,而“Qahirah”只被少数项目使用(这可能是因为它比较新)。因此,我建议先尝试使用Pycairo。 - soegaard
1
谢谢!cairocffiPycairo 有什么区别? - root
这是一个即插即用的替代品。 - soegaard
2
有哪些优缺点呢?我的意思是,为什么人们要做这个插拔式替换的工作? - root

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接