pip install Pillow
image = Image.open('/Users/crossorbit/Desktop/book.png')
image.show()
print(f'이미지 파일명 : {format(image.filename)}')
print(f'이미지 파일형식 : {format(image.format)}')
print(f'이미지 사이즈 : {format(image.size)}')
print(f'이미지 색상모드 : {format(image.mode)}')
print(f'이미지 Width : {format(image.width)}')
print(f'이미지 Height : {format(image.height)}')
[출력]
이미지 파일명 : /Users/crossorbit/Desktop/book.png
이미지 파일형식 : PNG
이미지 사이즈 : (360, 438)
이미지 색상모드 : RGBA
이미지 Width : 360
이미지 Height : 438
resize
함수는 크기 변경할 사이즈를 (width, height) 튜플 형식으로 설정할 수 있습니다.
# 크기 지정
resize_image = image.resize((150, 200))
# 비율로 조정하기
resize_image2 = image.resize((int(image.size[0]/5), int(image.size[1]/5)))
resize_image2
crop
함수는 (x1, y1, x2, y2) 튜플 형식으로 인자를 받아 이미지를 잘라 냅니다.
# 인자값은 x1, y1, x2, y2
crop_image = image.crop((150, 140, 230, 180))
crop_image
[출력]
crop
함수는 회전할 각도를 인자로 받아 이미지를 회전합니다. 90도, 180도, 270도 의 경우 아래 transpose 함수를 활용하는 방법도 있습니다.
rotate_image = image.rotate(180)
rotate_image
transpose
함수는 상하, 좌우 대칭시킬 때 활용할 수 있습니다.
flip_image = image.transpose(Image.FLIP_LEFT_RIGHT)
flip_image
filter
함수를 사용하려면 ImageFilter를 임포트 해야 합니다.
from PIL import ImageFilter
filter_image = image.filter(ImageFilter.GaussianBlur(10))
filter_image = image.filter(ImageFilter.MedianFilter)
filter_image = image.filter(ImageFilter.SHARPEN)
filter_image = image.filter(ImageFilter.CONTOUR)
filter_image
new
함수를 이용하며 새 이미지를 만든 후 paste
함수 활용하여 이미지를 합칠 수 있습니다.
new
의 인자는
new_image = Image.new("RGB", (750, 460), '#808080')
new_image.paste(image, (10, 10))
new_image.paste(filter_image, (image.width+20, 10))
new_image
[출력]
ImageDraw.Draw.rectangle
이용하여 원하는 좌표의 박스를 그리고, text
함수 이용하여 텍스트를 적용할 수 있습니다.
from PIL import ImageDraw, ImageFont
draw_image = ImageDraw.Draw(image)
draw_image.rectangle([150, 140, 230, 175], outline = 'green')
# 텍스트 설정
text = "도서명"
# 텍스트 폰트 설정
font = ImageFont.truetype('/Users/a06790/Downloads/costaurant/fonts/BMJUA_ttf.ttf', 10)
# 텍스트 크기(width, height) 설정
width_txt, height_txt = draw_image.textsize(text, font)
# 텍스트 위치 설정
width = 185
height = 150
margin = 10
x = width - width_txt - margin
y = height - height_txt - margin
# 텍스트 적용
draw_image.text((x, y), text, fill='green', font=font)
image
[출력]
image.save('./images/draw_text.png', format='PNG')
image2 = Image.open('./images/draw_text.png')
thumbnail_size = (50, 50)
image2.thumbnail(thumbnail_size)
image2