皮开罗对比开罗菲对比开罗
Pycairo vs. cairocffi vs. Qahirah
我想在 Python 中创建和栅格化矢量图形。我怀疑 Pycairo
or cairocffi
(edit: or Qahirah
) 是一个不错的选择。 (如果没有,欢迎评论。)
两者的实际区别是什么?
具体来说,Pycairo
documentation 表示:
If Pycairo is not what you need, have a look at cairocffi, which is an API compatible package using cffi or Qahirah, which is using ctypes and provides a more "pythonic" API with less focus on matching the cairo C API.
但这提出了一些问题:在什么情况下 Pycairo 可能“不是你需要的”,而 cairocffi 是? cffi/Qahirah/ctypes 在哪些方面比 Pycairo 所做的更好? Pycairo 在哪些方面不是“pythonic”?如果cairocffi比Pycairo好,为什么Pycairo更受欢迎,有没有优势?
编辑: A comma might be missing after "cffi" 在上面的引用中。在那种情况下,这不是关于“Pycairo vs. cairocffi”,而是关于“Pycairo vs. cairocffi vs. Qahirah”。
密切模仿 C API 意味着函数采用简单参数。
例如,move_to
function/method 看起来像这样:
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))
你可以把CAPI当成一个base level on top可以构建更方便API.
一如既往,它是 trade-off。使用直接样式 C API 可能会更快(但不会太多)。
可以在 Qahirah 的自述文件中找到更多信息:
https://github.com/ldo/qahirah
再一次 - 如果您找到使用 C 的 Cairo 教程,使用直接样式 C 可能更容易 API。
两者都试一下,看看你喜欢哪个。
我想在 Python 中创建和栅格化矢量图形。我怀疑 Pycairo
or cairocffi
(edit: or Qahirah
) 是一个不错的选择。 (如果没有,欢迎评论。)
两者的实际区别是什么?
具体来说,Pycairo
documentation 表示:
If Pycairo is not what you need, have a look at cairocffi, which is an API compatible package using cffi or Qahirah, which is using ctypes and provides a more "pythonic" API with less focus on matching the cairo C API.
但这提出了一些问题:在什么情况下 Pycairo 可能“不是你需要的”,而 cairocffi 是? cffi/Qahirah/ctypes 在哪些方面比 Pycairo 所做的更好? Pycairo 在哪些方面不是“pythonic”?如果cairocffi比Pycairo好,为什么Pycairo更受欢迎,有没有优势?
编辑: A comma might be missing after "cffi" 在上面的引用中。在那种情况下,这不是关于“Pycairo vs. cairocffi”,而是关于“Pycairo vs. cairocffi vs. Qahirah”。
密切模仿 C API 意味着函数采用简单参数。
例如,move_to
function/method 看起来像这样:
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))
你可以把CAPI当成一个base level on top可以构建更方便API.
一如既往,它是 trade-off。使用直接样式 C API 可能会更快(但不会太多)。
可以在 Qahirah 的自述文件中找到更多信息:
https://github.com/ldo/qahirah
再一次 - 如果您找到使用 C 的 Cairo 教程,使用直接样式 C 可能更容易 API。
两者都试一下,看看你喜欢哪个。