2014-04-27 5 views
0

Image.open ("image.tif")을 사용하여 이미지 파일을로드하고 있습니다. 그런 다음 Image.load()를 사용하여 이미지의 pixelMap을 생성합니다. 그럼 내가 배열에 각 픽셀을 저장합니다. 다음 코드는이 프로세스를 설명합니다. 그런 다음 각 픽셀의 ascii 값을 만들어 문자열에 저장하려고합니다. 그래서 내 픽셀 배열의 각 픽셀을 통과 한 다음 픽셀 값을 ascii 값으로 변경합니다. 그러나 250보다 큰 픽셀 값을 얻고 있기 때문에 오류가 발생합니다. 어떻게 가능합니까? 또한 흑백 이미지입니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?Python Image.load()가 250보다 큰 픽셀을 반환했습니다.

self.filename = filename 
self.im = Image.open(filename) 
self.pixelmap = self.im.load() #Loads the image as a map of pixels 
self.arr = [] 
for i in range(self.im.size[0]): 
    for j in range(self.im.size[1]): 
    mypixel = self.pixelmap[i, j] 
    self.arr.append(mypixel) 


for i in msgFile.arr: 
    self.message += str(unichr(int(i))) 
+1

* '오류가 있습니다'* 무엇입니까? 어떤 정확한 오류 메시지가 나타 납니까? – aruisdante

+1

또한''load''에 의해 반환 된 픽셀 값 유형은 이미지 유형에 따라 다릅니다. 예를 들어 GIF는 팔레트 색인 값을 반환합니다. 여기서 JPEG은 R, G, B 튜플을 반환합니다. – aruisdante

+0

unichr 값이 128을 초과하는 오류가 발생합니다. 코드를 self.mesasge + = str (chr (int (i)))으로 변경했습니다. – user2130331

답변

0

?

from PIL import Image 
import numpy as np 

image = np.asarray(Image.open('image.jpg')) 
_y, _x, _z = image.shape 
str_array = [str(image[y][x]) for y in range(_y) for x in range(_x)]