2016-08-28 2 views
2

사람이 같은 이미지의 일부를 회전하는 방법을 말해 줄 수 :는 이미지 파이썬의 일부를 회전

image

:

this

방법이 이미지의/중심 좌표 찾기

나는 이것을 사용하여 모든 pict를 회전시킬 수 있습니다.

from PIL import Image 

def rotate_image(): 
img = Image.open("nime1.png") 

img.rotate(45).save("plus45.png") 
img.rotate(-45).save("minus45.png") 

img.rotate(90).save("90.png") 
img.transpose(Image.ROTATE_90).save("90_trans.png") 

img.rotate(180).save("180.png") 


if __name__ == '__main__': 
rotate_image() 
+0

시도는에 연결하지 않고 문제의 사진을 포함합니다. – gowrath

+0

done sir, [이 이미지] (http://i.stack.imgur.com/PxGtN.png) –

+0

이미지의 복사본을 만듭니다. 자르기를 원하는 영역으로 자르고 회전시키고 회전하여 원본에 붙여 넣으십시오. 그게 효과가 있니? – gowrath

답변

1

그림의 영역을 새로운 변수로자를 수 있습니다. 이 경우 원래 이미지에서 120x120 픽셀 상자를 잘라 냈습니다. 90도 회전 한 다음 원본에 붙여 넣습니다.

enter image description here

from PIL import Image 

img = Image.open('./image.jpg') 
sub_image = img.crop(box=(200,0,320,120)).rotate(90) 
img.paste(sub_image, box=(200,0)) 

그래서 좀 더 생각하고이 회전하기 전에 잘라낸 화상에 원형 마스크를 적용하는 기능을 제작. 이상한 효과가없는 임의의 각도를 허용합니다.

def circle_rotate(image, x, y, radius, degree): 
    img_arr = numpy.asarray(image) 
    box = (x-radius, y-radius, x+radius+1, y+radius+1) 
    crop = image.crop(box=box) 
    crop_arr = numpy.asarray(crop) 
    # build the cirle mask 
    mask = numpy.zeros((2*radius+1, 2*radius+1)) 
    for i in range(crop_arr.shape[0]): 
     for j in range(crop_arr.shape[1]): 
      if (i-radius)**2 + (j-radius)**2 <= radius**2: 
       mask[i,j] = 1 
    # create the new circular image 
    sub_img_arr = numpy.empty(crop_arr.shape ,dtype='uint8') 
    sub_img_arr[:,:,:3] = crop_arr[:,:,:3] 
    sub_img_arr[:,:,3] = mask*255 
    sub_img = Image.fromarray(sub_img_arr, "RGBA").rotate(degree) 
    i2 = image.copy() 
    i2.paste(sub_img, box[:2], sub_img.convert('RGBA')) 
    return i2 

i2 = circle_rotate(img, 260, 60, 60, 45) 
i2 

enter image description here

+0

예, 성공했지만 새로운 pict를 저장할 수는 없다 : ( –

+0

circle_rotate를 사용하려고하면 iam not successfull이된다. –

+0

'i2.save ('./ new_image.jpg ')' – James

0

이 문제를 해결할 수 있습니다. 당신이 img = Image.open("nime1.png")

  1. 이 IMG2 = img.copy()
  2. 이 img2.crop를 사용하여 원하는 위치에 IMG2의 작물 만들기()를 사용하여 이미지의 사본을 작성 말해봐. 당신은 다시 img.paste()

노트를 사용하여 해당 위치에서 IMG에이 here
  • 붙여 넣기 IMG2을 수행하는 방법을 읽을 수 있습니다 : 당신은 폭을 나눌 수 있습니다,
  • 중심 좌표를 찾으려면 및 높이를 2로 설정하십시오.