[PYTHON] PIL (Python-Imaging)을 사용하여 이미지의 색상을 반전하는 방법은 무엇입니까?
PYTHONPIL (Python-Imaging)을 사용하여 이미지의 색상을 반전하는 방법은 무엇입니까?
흰색과 검정색이 뒤집힌 이미지 (음수)로 검은 배경 문자에 흰색으로 그려진 일련의 이미지를 이미지로 변환해야합니다. PIL을 사용하여 어떻게 이것을 할 수 있습니까?
해결법
-
==============================
1.docs에서 다음을 시도하십시오. http://effbot.org/imagingbook/imageops.htm
docs에서 다음을 시도하십시오. 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 이미지에만 작동합니다."
-
==============================
2.이미지가 RGBA 투명하면이 실패합니다 ...이 작동합니다.
이미지가 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')
-
==============================
3."1"모드 (즉, 1 비트 픽셀, 흑백, 1 바이트 당 1 픽셀로 저장 됨 - docs 참조)로 이미지를 사용하는 사용자는 PIL.ImageOps를 호출하기 전에 이미지를 "L"모드로 변환해야합니다 .거꾸로 하다.
"1"모드 (즉, 1 비트 픽셀, 흑백, 1 바이트 당 1 픽셀로 저장 됨 - docs 참조)로 이미지를 사용하는 사용자는 PIL.ImageOps를 호출하기 전에 이미지를 "L"모드로 변환해야합니다 .거꾸로 하다.
그러므로:
im = im.convert('L') im = ImageOps.invert(im) im = im.convert('1')
-
==============================
4.누군가 CMYK 이미지를 반전하는 경우 PIL 및 Pillow의 현재 구현이이를 지원하지 않는 것으로 보이고 오류가 발생합니다. 그러나이 편리한 기능 (본질적으로 위의 Greg Sadetsky의 게시물 확장)을 사용하여 이미지의 개별 밴드를 뒤집어서이 문제를 쉽게 피할 수 있습니다.
누군가 CMYK 이미지를 반전하는 경우 PIL 및 Pillow의 현재 구현이이를 지원하지 않는 것으로 보이고 오류가 발생합니다. 그러나이 편리한 기능 (본질적으로 위의 Greg Sadetsky의 게시물 확장)을 사용하여 이미지의 개별 밴드를 뒤집어서이 문제를 쉽게 피할 수 있습니다.
def CMYKInvert(img) : return Image.merge(img.mode, [ImageOps.invert(b.convert('L')) for b in img.split()])
-
==============================
5.
from PIL import Image img = Image.open("archive.extension") pixels = img.load() for i in range(img.size[0]): for j in range(img.size[1]): x,y,z = pixels[i,j][0],pixels[i,j][1],pixels[i,j][2] x,y,z = abs(x-255), abs(y-255), abs(z-255) pixels[i,j] = (x,y,z) img.show()
`
from https://stackoverflow.com/questions/2498875/how-to-invert-colors-of-image-with-pil-python-imaging by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] numpy는 행 합계로 행을 나눕니다. (0) | 2018.10.29 |
---|---|
[PYTHON] 여러 열을 판다에 동시에 추가 (0) | 2018.10.29 |
[PYTHON] 목록에서 부울 값 반전하기 Python (0) | 2018.10.29 |
[PYTHON] html 페이지와 그 내용을 다운로드하십시오. (0) | 2018.10.29 |
[PYTHON] 어떻게하면 파이썬 "플랫폼 독립 라이브러리 <prefix>를 찾을 수 없습니까"문제를 해결할 수 있습니까? (0) | 2018.10.29 |