2017-10-25 10 views
0

이미지의 픽셀 행 목록을 다음 형식으로 가지고 있다면 이미지를 어떻게 얻을 수 있습니까?Python3에서 픽셀 값 목록에서 이미지를 만드는 방법은 무엇입니까?

[ 
    [(54, 54, 54), (232, 23, 93), (71, 71, 71), (168, 167, 167)], 
    [(204, 82, 122), (54, 54, 54), (168, 167, 167), (232, 23, 93)], 
    [(71, 71, 71), (168, 167, 167), (54, 54, 54), (204, 82, 122)], 
    [(168, 167, 167), (204, 82, 122), (232, 23, 93), (54, 54, 54)] 
] 

답변

1

PIL과 NumPy와 친구가 여기에 있습니다 :

from PIL import Image 
import numpy 


pixels = [ 
    [(54, 54, 54), (232, 23, 93), (71, 71, 71), (168, 167, 167)], 
    [(204, 82, 122), (54, 54, 54), (168, 167, 167), (232, 23, 93)], 
    [(71, 71, 71), (168, 167, 167), (54, 54, 54), (204, 82, 122)], 
    [(168, 167, 167), (204, 82, 122), (232, 23, 93), (54, 54, 54)] 
] 

# Convert the pixels into an array using numpy 
array = numpy.array(pixels, dtype=numpy.uint8) 

# Use PIL to create an image from the new array of pixels 
new_image = Image.fromarray(array) 
new_image.save('hello.png') 

편집 :

다음 게시물을 참조

이 방법을 사용하여 임의의 픽셀 이미지를 만드는 작은 목록 이해 재미 :

from PIL import Image 
import numpy as np 
import random 

def random_img(output, width, height): 
    import random 

    array = np.random.random_integers(0,255, (width,height,3)) 

    array = np.array(array, dtype=np.uint8) 
    img = Image.fromarray(array) 
    img.save(output) 


random_img('a.png', 50, 50) 
+0

감사합니다. – Gray

+0

좋아요! 내 게시물을 편집하여 임의의 픽셀 값으로 이미지를 만드는 작은 목록 이해 재미. – Jebby

+0

큰 답변이지만 큰 해상도의 경우 시간이 많이 걸립니다 (임의의 픽셀 1). 그래서 최적화해야합니다. 내가 만든 유일한 수정은 목록 이해력과 함수 width * height *를 3 번 ​​호출하는 대신 방금 한 번 호출했기 때문입니다. array = np.random.random_integers (0,255, (width, height, 3)). 멋진 하루 되십시오 :) –

0

는 PIL 자신을 사용하지만, 알아내는 가장 좋은 방법은 PIL을 사용하여 실제 이미지 파일을 열 수 없다. 그런 다음 해당 이미지를 여는 것과 관련된 API 및 객체를 탐색하고 픽셀 값이 API와 관련된 특정 객체 내에 저장되는 방법을 살펴 봅니다.

그런 다음 추출한 RGB 값을 사용하여 유효한 PIL 이미지 개체를 만들 수 있습니다.

편집 : How do I create an image in PIL using a list of RGB tuples?

추가, PIL에서 픽셀 값에 접근 : https://pillow.readthedocs.io/en/4.3.x/reference/PixelAccess.html

+0

감사합니다.하지만 이미 이전에이 게시물을 보았습니다. 그러나 나는 여전히 가지고있는 값으로 이미지를 만드는 방법을 이해하지 못합니다. getdata()를 사용하여 이미지에서 픽셀 값을 추출 할 수 있지만 픽셀 값 목록에서만 새 이미지를 만들려면 어떻게해야할까요? – Gray