2009-08-05 5 views
10
from PIL import Image 

img = Image.open('1.png') 
img.save('2.png') 

첫 번째 이미지가 배경이 투명 저장하지 않습니다,하지만 난 그것을 저장할 때, 투명성 내가 뭘 잘못PIL 투명성

(배경이 흰색) 사라?

답변

30

아마 이미지는 (PIL 모드 "P")를 인덱싱하기 때문에 투명성 PNG의 알파 채널에 설정되지 않으며 메타 데이터 정보입니다.

할 수 있습니다 다음 코드를 사용하여 투명 배경 팔레트 인덱스를 얻을 : 당신이 가지고있는 정보를 볼을 조사 할 수 있도록

from PIL import Image 

img = Image.open('1.png') 
png_info = img.info 
img.save('2.png', **png_info) 

이미지 정보가 사전입니다 :

예를 들면 : 당신이 만약 이 같은 출력을 얻을 것이다 그것을 인쇄 다음

정보가 원래의 PNG를 만든 도구에 따라 다양하지만, 무엇 importan입니다 것입니다 저장
{'transparency': 7, 'gamma': 0.45454, 'dpi': (72, 72)} 

여기서 당신을 위해 "투명성"키가 있습니다. 예에서이 팔레트 인덱스 "7"투명으로 처리해야한다고 말한다.

+0

의 유형에 "RGBA를"강제, 감사합니다! 이상한 일이지만, 그 속성은 자동으로 저장되지 않았습니다. 물론 –

4

당신은 항상 일

img = Image.open('1.png') 
img.convert('RGBA') 
img.save('2.png') 
+5

,하지만 그는 지혜로운 형식에서, 원래의 것과 같은 이미지를 생성하지 않습니다 그런 식으로. –

+0

+1. 아하, 그렇다. 루카스 S. –