我有一些科学数据对于准确绘制非常重要。它采用许多侧边共享多边形(来自voronoi分区的输出)的形式,高度密集,并且通常小于画布上的单个像素。但是,我希望像素的值能够可靠地报告位于其中的多边形的综合亮度:例如,如果一个像素被亮度为1.0的多边形覆盖了一半,而另一个像素被亮度为另一个的多边形覆盖了一半0.0,像素应恰好为0.5。
我在Python中进行此操作,因此理想情况下,将有一些不错的库可供我使用,可以进行高度精确的绘图。Matplotlib有一个令人讨厌的错误,该错误会导致多边形的绘制比实际范围小一些[0],即使多边形之间没有间隙地平铺,也会导致每个多边形的边界周围出现背景色的线。
出色的Cairo库确实是可以做到的,它专为高精度,高性能渲染而设计。只需安装Python绑定使用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")
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句