ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • python: Pillow 라이브러리 정리
    Python 2021. 6. 7. 16:06

    pillow는 파이썬의 이미지 편집 라이브러리로 

    이미지 편집에 관한 여러가지 기능을 제공한다. 

     

     

     

    1. 이미지 잘라내기 

     

    from PIL import Image
    img = Image.open('gif/panda.gif')
     # (100, 200)에서 (600, 700)까지
    xy = (100, 200, 600, 700)
    # xy 범위를 크롭해서 가져온다. 
    crop_img = img.crop(xy)
    print(crop_img.size)
    crop_img.show()

     

     

     

    2. 이미지 붙여넣기 

     

    from PIL  import Image
    img = Image.open('gif/panda.gif')
    
     # (100, 200)에서 (600, 700)의 이미지를 잘라낸다. 
    x = (100, 200, 600, 700)
    crop_img = img.crop(x)
    
    #  붙여 넣는 이미지의 크기와 원래이미지의 크기가 같아야 한다.
    y = (0, 0, 500, 500)
    # crop_img를 y에 붙여넣는 것
    img.paste(crop_img, y)
    img.show()

     

     

     

    3. 이미지 회전, 리사이즈, 대칭 

     

    # 이미지 회전하기
    from PIL import Image
    img = Image.open('gif/panda.gif')
    
    # 반시계 방향으로 90도 회전
    img_r = img.rotate(90)
    img_r.show()

     

     

    # 이미지 사이즈 조절하기 
    from PIL import Image
    img = Image.open('gif/panda.gif')
    
    # 이미지 크기를 width = 100, height = 500으로 조정
    img_s = img.resize((100, 500))
    img_s.show()
    

     

     

    # 이미지 좌우반전  
    from PIL import Image
    img = Image.open('gif/panda.gif')
    
    # 이미지를 좌우 반전시킨다. 
    img_opp = img.transpose(Image.FLIP_LEFT_RIGHT)
    img_opp.show()
    

     

     

     

    4. 이미지에서 R, G, B 추출하기 

     

    from PIL import Image
    img = Image.open('gif/panda.gif')
    
    # r, g, b 성분 추출하기 
    r, g, b = img.split()
    print(r.show())
    print(g.show())
    print(b.show())

     

     

     

    5. merge 이용해서 R, G, B 합치기

     

    from PIL import Image
    img = Image.open('gif/panda.gif')
    
    # R G B 성분 나누기 
    r, g, b = img.split()
    
    # RGB모드를 이용하여 (b, g, r)로 merge
    RGB_img = Image.merge("RGB", (b, g, r))
    RGB_img.show()

     

     

     

    6. 이미지 필터 씌우기 

     

    # 이미지 필터 씌우기
    from PIL import Image
    from PIL import ImageFilter
    img = Image.open('gif/panda.gif')
    
    # 이미지 필터링하기 
    img1 = img.filter(ImageFilter.BLUR)
    img2 = img.filter(ImageFilter.EMBOSS)
    img3 = img.filter(ImageFilter.CONTOUR)
    
    img1.show()
    img2.show()
    img3.show()

     

     

     

    7. Tkinter와 pillow 같이 사용하기 

     

    from PIL import Image, ImageTk
    import tkinter
    root = tkinter.Tk()
    
    # 500 x 500 크기의 캔버스 만들기
    canvas = tkinter.Canvas(root, width=500, height=500)
    canvas.pack()
    
    # pillow 이미지를 tk 이미지형식으로 변환
    img = Image.open('gif/panda.gif')
    img_tk = ImageTk.PhotoImage(img)
    
    # 캔버스의 300 x 300을 중심으로 한 이미지 생성
    canvas.create_image(300, 300, image=img_tk)
    root.mainloop()

     

     

     

    8. RGB picker 만들기 

     

    import tkinter
    from PIL import Image, ImageTk
    root = tkinter.Tk()
    cv = tkinter.Canvas(root, width=1000, height=1000)
    
    def click(event):
        print("클릭 위치:", event.x, event.y)
        r, g, b = img.getpixel((event.x, event.y))
        print(r, g, b)
        print("R:{} G:{} B:{}".format(r, g, b))
    
    cv.bind("<Button>", click)
    cv.pack()
    
    img = Image.open('gif/panda.gif')
    img_tk = ImageTk.PhotoImage(img)
    cv.create_image(250, 250, image=img_tk)
    
    root.mainloop()

     

    반응형

    댓글

Designed by Tistory.