2017-04-20 9 views
0

직사각형 이미지를 정사각형 이미지로 변환하고 싶습니다. 하지만 문제가 있습니다.직사각형 이미지를 사각형으로 바꿈

내 시험 파이썬 코드는 여기에 있습니다 :

from PIL import Image 
import numpy as np 

im = Image.open('aa.png') 
pixMap = im.load() 

img = Image.new(im.mode, im.size) 
sqrWidth = np.ceil(np.sqrt(im.size[0]*im.size[1]) 

pixNew = Image.new(im.mode, (im.size[0]*im.size[1], 1)) 
pixSave = Image.new(im.mode, (sqrWidth, sqrWidth)) 

k=0 
for i in range(img.size[0]): 
    for j in range(img.size[1]): 
     pixNew[k] = pixMap[i, j] 
     k=k+1 

k=0 
for i in range(sqrWidth): 
    for j in range(sqrWidth): 
     pixSave[i, j] = pixNew[k] 
     k=k+1 

im.close() 
img.show()  
img.save("out.png") 
img.close() 

내 오류가 여기에 있습니다 :

은 무슨 일이야
Traceback (most recent call last): 
    File "rect2square.py", line 13, in <module> 
    pixNew[k] = pixMap[i, j] 
    File "/usr/lib/python2.7/dist-packages/PIL/Image.py",  line 528, in __getattr__ 
raise AttributeError(name) 
AttributeError: __setitem__ 

?

답변

0

크기가 인 resize 이미지 필터를 PIL로 사용할 수 있습니다.

from PIL import Image 
import numpy as np 

im = Image.open('image.png') 
sqrWidth = np.ceil(np.sqrt(im.size[0]*im.size[1])).astype(int) 
im_resize = im.resize((sqrWidth, sqrWidth)) 
im_resize.save('output.png') 

이미지가 사각형으로 스쿼시됩니다. 이게 니가 원하는거야?

입력 이미지

input

출력 이미지

output

+0

아니, 그건 내가 원하는 게 아니야 .. 내 목표는 아니야. 스트레칭하지만 데이터 시퀀스 reshapping. 어쨌든 고마워 ~. –

+0

데이터 시퀀스 재 형성이란 무엇을 의미합니까? – Robbie

+0

이렇게 : [1234, 5678] -> [123, 456, 780] ... 제로 패딩이있는 사각형 형태. 감사. –

0

당신이 당신의 원본 이미지의 모양을 유지하고 여전히 그것을 사각형을 확인하기 위해 패딩을 추가하는 것을 고려하고자하는 경우 그것 광장 및 다음 로비 크기 제안으로 크기를 조정

+0

이것은 답변이 아닙니다. 댓글과 같은 제안을하고 있습니다. [답변보기] (https://stackoverflow.com/help/how-to-answer) 답변 게시 방법! – Zico

+0

저는 이것이 대답이 아니라 주석이어야한다고 생각합니다. –