web-dev-qa-db-ja.com

Pythonで個々のピクセルの色を変更することは可能ですか?

画像の個々のピクセルの色を変更するにはpython)が必要ですが、どうすればよいですか?

20
rectangletangle

Gabi Purcaruの link で与えられた例に基づいて構築するために、これが PIL docs からまとめられたものです。

PILを使用して単一のピクセルを確実に変更する最も簡単な方法は次のとおりです。

_x, y = 10, 25
shade = 20

from PIL import Image
im = Image.open("foo.png")
pix = im.load()

if im.mode == '1':
    value = int(shade >= 127) # Black-and-white (1-bit)
Elif im.mode == 'L':
    value = shade # Grayscale (Luminosity)
Elif im.mode == 'RGB':
    value = (shade, shade, shade)
Elif im.mode == 'RGBA':
    value = (shade, shade, shade, 255)
Elif im.mode == 'P':
    raise NotImplementedError("TODO: Look up nearest color in palette")
else:
    raise ValueError("Unexpected mode for PNG image: %s" % im.mode)

pix[x, y] = value 

im.save("foo_new.png")
_

これはPIL1.1.6以降で機能します。古いバージョンをサポートしなければならないという不運がある場合は、パフォーマンスを犠牲にして、_pix[x, y] = value_をim.putpixel((x, y), value)に置き換えることができます。

21
ssokolow