2010-03-23 5 views

Antwort

47

Versuchen Sie, die folgenden von der Dokumentation: 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') 

Hinweis: „Das ImageOps Modul eine Reihe von‚fertige‘Bildverarbeitungsoperationen enthält Dieses Modul etwas experimentell ist, und die meisten Betreiber nur arbeiten. L- und RGB-Bilder. "

+0

Oh, es scheint, dass ich dieses Modul verpasst haben. Vielen Dank. – bialix

15

Wenn das Bild RGBA transparent ist, wird dies nicht gelingen ... Dies soll allerdings arbeiten:

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') 
8

Für jedermann mit einem Bild in „1“ -Modus arbeitet (dh 1-Bit-Pixel, schwarz und weiß , gespeichert mit einem Pixel pro Byte - see docs), müssen Sie vor dem Aufruf von PIL.ImageOps.invert in den "L" -Modus konvertieren.

So:

im = im.convert('L') 
im = ImageOps.invert(im) 
im = im.convert('1') 
Verwandte Themen