我有一些科学数据非常重要,要准确画出来。它以许多边共享多边形(来自 voronoi 分区的输出)的形式出现,这些多边形高度密集,并且通常小于 Canvas 上的单个像素。但是,我希望像素的值能够可靠地报告位于其中的多边形的综合亮度:因此,例如,如果一个像素一半被亮度为 1.0 的多边形覆盖,另一半被另一个具有亮度的多边形覆盖0.0,像素应该正好是 0.5。
我在 Python 中执行此操作,因此理想情况下,我可以使用一些用于高度精确绘图的不错的库。 Matplotlib 有一个严重的错误,它会导致绘制的多边形略小于其实际范围[0],导致每个多边形的边界周围出现背景色线条,即使多边形平铺平面且中间没有间隙也是如此。
[0] https://github.com/matplotlib/matplotlib/issues/2823
这对于优秀的 Cairo 确实是可能的库,专为高精度、高性能渲染而制作。只需安装 python binding使用 pip install pycairo
。
尝试以下简短示例。请注意亚子像素渲染如何导致蓝色和红色在某些像素位置混合成紫色。
import cairo
WIDTH, HEIGHT = 32, 32
surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, WIDTH, HEIGHT)
ctx = cairo.Context(surface)
# draw blue triangle
ctx.move_to(10, 10)
ctx.line_to(20.5, 10)
ctx.line_to(20.5, 20)
ctx.close_path()
ctx.set_source_rgb(0.5, 0.0, 0.0)
ctx.fill()
# draw blue triangle
ctx.move_to(10, 15)
ctx.line_to(20.5, 15)
ctx.line_to(20.5, 25)
ctx.close_path()
ctx.set_source_rgb(0.0, 0.0, 0.5)
ctx.fill()
surface.write_to_png("example.png")
我是一名优秀的程序员,十分优秀!