2014-09-08 2 views
2

두 개의 코드가 있는데 둘 다 검정색 사각형이 포함 된 test.png를 만들어야합니다. 첫 번째 작업에서는 수행하지만 두 번째 작업은 투명한 사각형을 반환합니다. 그들 사이의 차이점은 첫 번째 것은 왼쪽에 명확한 스트라이프가 있고 두 번째는 그렇지 않다는 것입니다.PhotoImage의 투명도 버그

첫 번째 예 :

root = Tk() 
image = PhotoImage(width = 50, height = 50) 
for x in range(1, 50): 
    for y in range(50): 
     pixel(image, (x,y), (0,0,0)) 
image.write('test.png', format='png') 

번째 예 :

I의이 코드 갖는 함수 화소()는 Tkinter을 가져와 사용
root = Tk() 
image = PhotoImage(width = 50, height = 50) 
for x in range(50): 
    for y in range(50): 
     pixel(image, (x,y), (0,0,0)) 
image.write('test.png', format='png') 

:

def pixel(image, pos, color): 
    """Place pixel at pos=(x,y) on image, with color=(r,g,b).""" 
    r,g,b = color 
    x,y = pos 
    image.put("#%02x%02x%02x" % (r,g,b), (x, y)) 

답변

1

대상을 Tkinter의 PhotoImage 클래스는 실제로 PNG를 저장할 수 없습니다. GIF, PGM 및 PPM 만 지원합니다. 미리보기 이미지의 색상이 정확하다는 것을 알았을 수도 있지만 파일을 열면 비어 있습니다.

PNG 이미지를 저장하려면 Python Imaging Library 또는 Python 3의 경우 Pillow을 사용해야합니다. 이와 , 이미지 생성도 쉽다 : 당신이 필요로하는 경우

from PIL import Image 

image = Image.new("RGB", (50, 50), (0,0,0)) 
image.save('test.png', format='PNG') 

, 당신은 Tkinter를 사용할 수 있습니다 PIL의 ImageTk.PhotoImage 객체로 변환 할 수 있습니다.