我正在尝试使用 python 的 pygame 库逐个像素地编辑 png 文件。这是基本过程:我加载 png 并循环遍历所有像素。该循环将当前像素的 rgb 值传递给一个函数,该函数找到与一组预定义的 rgb 值(如果您愿意,可以使用调色板)最接近的欧几里德距离匹配。然后我使用 surface.set_at() 函数将像素颜色更改为匹配函数返回的颜色。
我一直在努力确定为什么结果根本不是我所期望的。最终我注意到了这一点。
>>> image.set_at((0,0),(160, 130, 95, 255))
>>> image.get_at((0,0))
(152, 128, 96, 255)
很清楚地看到 set_at() 函数对传递的颜色进行了某种类型的舍入。这对我来说是个问题,所以我有两个问题。
1) 为什么 set_at() 函数会做出这种改变?
2)我该如何解决这个问题并将rgb值明确设置为我想要的?
谢谢大家。