2010-03-23 7 views
30

검은 색 바탕에 흰색으로 그려진 일련의 이미지를 흰색과 검정색이 반전 된 이미지로 변환해야합니다 (음수). PIL을 사용하여 어떻게 이것을 할 수 있습니까? 이 모듈은 다소 실험이다 ImageOps 모듈 '기성품'이미지 프로세싱 작업의 수를 포함 ", 대부분의 사업자들은에서만 작동 :. http://effbot.org/imagingbook/imageops.htmPIL (Python-Imaging)을 사용하여 이미지의 색상을 반전하는 방법은 무엇입니까?

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

참고 :

답변

47

은 워드 프로세서에서 다음을 시도하십시오 L 및 RGB 이미지. " 이미지가이 실패합니다 RGBA 투명 경우

+0

아, 내가 그 모듈을 놓친 것 같다. 감사. – bialix

15

...이 비록 작동합니다 : 흑백

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

"1"모드에서 이미지 작업 누군가를 위해 (즉, 1 비트 픽셀, , 바이트 당 하나의 픽셀로 저장 - see docs), PIL.ImageOps.invert을 호출하기 전에 이것을 "L"모드로 변환해야합니다. 따라서

:

im = im.convert('L') 
im = ImageOps.invert(im) 
im = im.convert('1') 
관련 문제