黒の背景文字に白で描かれた一連の画像を、白と黒が反転した画像(負の画像)に変換する必要があります。 PILを使用してこれを達成するにはどうすればよいですか?
ドキュメントから次のことを試してください。 http://effbot.org/imagingbook/imageops.htm
from PIL import Image
import PIL.ImageOps
image = Image.open('your_image.png')
inverted_image = PIL.ImageOps.invert(image)
inverted_image.save('new_name.png')
注:「ImageOpsモジュールには、いくつかの「既製」の画像処理操作が含まれています。このモジュールは多少実験的であり、ほとんどのオペレーターはLおよびRGB画像でのみ動作します。」
画像がRGBA透明の場合、これは失敗します...これは動作するはずです:
from PIL import Image
import PIL.ImageOps
image = Image.open('your_image.png')
if image.mode == 'RGBA':
r,g,b,a = image.split()
rgb_image = Image.merge('RGB', (r,g,b))
inverted_image = PIL.ImageOps.invert(rgb_image)
r2,g2,b2 = inverted_image.split()
final_transparent_image = Image.merge('RGBA', (r2,g2,b2,a))
final_transparent_image.save('new_file.png')
else:
inverted_image = PIL.ImageOps.invert(image)
inverted_image.save('new_name.png')
「1」モード(つまり、1ビットピクセル、白黒、バイトごとに1ピクセルで保存されている- のドキュメント を参照)で画像を操作している場合は、 PIL.ImageOps.invert
を呼び出す前に「L」モードに変換します。
したがって:
im = im.convert('L')
im = ImageOps.invert(im)
im = im.convert('1')