[PYTHON] PIL을 사용하여 투명한 png 이미지를 다른 이미지와 병합하는 방법
PYTHONPIL을 사용하여 투명한 png 이미지를 다른 이미지와 병합하는 방법
투명 한 png 이미지 "foo.png"가 있습니다. 와 함께 다른 이미지를 열었습니다.
im = Image.open("foo2.png");
이제 내가 필요한 것은 foo.png와 foo2.png를 병합하는 것입니다.
(foo.png에 텍스트가 들어있어 foo2.png에 해당 텍스트를 인쇄하고 싶습니다.)
해결법
-
==============================
1.
import Image background = Image.open("test1.png") foreground = Image.open("test2.png") background.paste(foreground, (0, 0), foreground) background.show()
.paste ()의 첫 번째 매개 변수는 붙여 넣을 이미지입니다. 두 번째는 좌표이고, 비밀 소스는 세 번째 매개 변수입니다. 이미지를 붙여 넣을 때 사용할 마스크를 나타냅니다. 투명도가있는 이미지를 전달하면 알파 채널이 마스크로 사용됩니다.
문서를 확인하십시오.
-
==============================
2.배경 이미지에 투명도가 포함되어 있으면 Image.paste가 예상대로 작동하지 않습니다. 실제 알파 합성을 사용해야합니다.
배경 이미지에 투명도가 포함되어 있으면 Image.paste가 예상대로 작동하지 않습니다. 실제 알파 합성을 사용해야합니다.
Pillow 2.0에는이 작업을 수행하는 alpha_composite 함수가 포함되어 있습니다.
background = Image.open("test1.png") foreground = Image.open("test2.png") Image.alpha_composite(background, foreground).save("test3.png")
편집 : 두 이미지는 RGBA 유형이어야합니다. 그래서 팔레트 화 된 경우 convert ( 'RGBA')를 호출해야합니다. 배경에 알파 채널이 없으면 일반 붙여 넣기 방법을 사용할 수 있습니다 (빠름).
-
==============================
3.olt가 이미 지적했듯이, 소스와 대상 모두에 알파가 포함되어 있으면 Image.paste가 제대로 작동하지 않습니다.
olt가 이미 지적했듯이, 소스와 대상 모두에 알파가 포함되어 있으면 Image.paste가 제대로 작동하지 않습니다.
다음 시나리오를 고려하십시오.
두 개의 테스트 이미지 모두 alpha를 포함합니다.
layer1 = Image.open("layer1.png") layer2 = Image.open("layer2.png")
다음과 같이 Image.paste를 사용하여 이미지 합성 :
final1 = Image.new("RGBA", layer1.size) final1.paste(layer1, (0,0), layer1) final1.paste(layer2, (0,0), layer2)
다음 이미지가 생성됩니다. 오버레이 된 빨간색 픽셀의 알파 부분은 두 번째 레이어에서 완전히 가져옵니다. 픽셀은 올바르게 혼합되지 않습니다.
다음과 같이 Image.alpha_composite를 사용하여 이미지 합성 :
final2 = Image.new("RGBA", layer1.size) final2 = Image.alpha_composite(final2, layer1) final2 = Image.alpha_composite(final2, layer2)
다음 (올바른) 이미지를 생성합니다.
-
==============================
4.블렌딩을 사용할 수도 있습니다.
블렌딩을 사용할 수도 있습니다.
im1 = Image.open("im1.png") im2 = Image.open("im2.png") blended = Image.blend(im1, im2, alpha=0.5) blended.save("blended.png")
from https://stackoverflow.com/questions/5324647/how-to-merge-a-transparent-png-image-with-another-image-using-pil by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 파이썬에 수학 nCr 함수가 있습니까? [복제] (0) | 2018.10.03 |
---|---|
[PYTHON] scikit-learn K-Means Clustering을 사용하여 자신의 거리 함수를 지정할 수 있습니까? (0) | 2018.10.02 |
[PYTHON] 한 줄 명령 줄에서 파이썬 다중 행 구문 실행하기 (0) | 2018.10.02 |
[PYTHON] 사전 키 이름 바꾸기 (0) | 2018.10.02 |
[PYTHON] __hash __ ()을 구현하는 정확하고 좋은 방법은 무엇입니까? (0) | 2018.10.02 |