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()関数が、渡された色に対してある種の丸めを行うことは明らかです。これは私にとって問題なので、2つの質問があります。
1)set_at()関数がこの変更を行うのはなぜですか?
2)これを回避し、rgb値を希望する値に明示的に設定するにはどうすればよいですか?
皆さんありがとう。