python中多边形绘制的亚像素精度?

显示名称

我有一些科学数据对于准确绘制非常重要。它采用许多侧边共享多边形(来自voronoi分区的输出)的形式,高度密集,并且通常小于画布上的单个像素。但是,我希望像素的值能够可靠地报告位于其中的多边形的综合亮度:例如,如果一个像素被亮度为1.0的多边形覆盖了一半,而另一个像素被亮度为另一个的多边形覆盖了一半0.0,像素应恰好为0.5。

我在Python中进行此操作,因此理想情况下,将有一些不错的库可供我使用,可以进行高度精确的绘图。Matplotlib有一个令人讨厌的错误,该错误会导致多边形的绘制比实际范围小一些[0],即使多边形之间没有间隙地平铺,也会导致每个多边形的边界周围出现背景色的线。

[0] https://github.com/matplotlib/matplotlib/issues/2823

狂热

出色的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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章