Python Pillow-ImageDraw 모듈

그만큼 ‘ImageDraw’모듈은 Image Object에 대한 간단한 2D 그래픽 지원을 제공합니다. 일반적으로이 모듈을 사용하여 새 이미지를 만들고 기존 이미지에 주석을 달거나 수정하고 웹 사용을 위해 즉석에서 그래픽을 생성합니다.

그래픽 명령은 도형 그리기 및 텍스트 주석을 지원합니다.

  • 이미지는 픽셀의 2 차원 배열 (그림 요소)로 잘 생각할 수 있습니다. 픽셀은 지원되는 색상의 가장 작은 점입니다.

  • ImageDraw에서 사용하는 2 차원 좌표계의 원점은 upper left corner 이미지의.

  • 우리가 사용하는 베개 색 구성표는 RGB입니다. 색상 RGB 표현 및 지원은 모듈에서 제공합니다.ImageColor.

  • 비트 맵, OpenType 또는 TrueType은 텍스트 주석에 허용되는 글꼴입니다.

  • 대부분의 그리기 명령에는 명령을 적용 할 이미지 영역을 지정하는 경계 상자 매개 변수가 필요할 수 있습니다.

  • 일련의 좌표는 [(x0, y0), (x1, y1),… (xn, yn)]로 나타낼 수 있습니다.

  • 일부 그리기 명령의 경우 각도 값이 필요합니다.

다음 파이썬 예제는 주어진 이미지에 선을 그립니다-

#Import required libraries
import sys
from PIL import Image, ImageDraw

#Create Image object
im = Image.open("images/logo.jpg")

#Draw line
draw = ImageDraw.Draw(im)
draw.line((0, 0) + im.size, fill=128)
draw.line((0, im.size[1], im.size[0], 0), fill=128)

#Show image
im.show()

산출

위의 프로그램을 Example.py로 저장하고 실행하면 다음과 같이 이미지에 선을 그리고 표준 PNG 디스플레이 유틸리티를 사용하여 표시합니다.

캔버스

  • ImageDraw는 이미지의 필로우 드로어 블 표면 (예 : 캔버스)입니다.

  • ImageDraw.Draw (img)는 Image 매개 변수 img의 드로어 블 캔버스 표현을 반환합니다. 캔버스의 배경은 "img"이미지입니다.

다음 파이썬 예제는 주어진 이미지에 텍스트를 그립니다-

#Import required modules from Pillow package
from PIL import Image, ImageDraw, ImageFont

# get an image
base = Image.open('images/boy.jpg').convert('RGBA')

# make a blank image for the text, initialized to transparent text color
txt = Image.new('RGBA', base.size, (255,255,255,0))

# get a font
fnt = ImageFont.truetype('E:/PythonPillow/Fonts/Pacifico.ttf', 40)

# get a drawing context
d = ImageDraw.Draw(txt)

# draw text, half opacity
d.text((14,14), "Tutorials", font=fnt, fill=(255,255,255,128))

# draw text, full opacity
d.text((14,60), "Point", font=fnt, fill=(255,255,255,255))
out = Image.alpha_composite(base, txt)

#Show image
out.show()

산출

'ImageDraw'모듈을 사용하여 도형 그리기

ImageDraw 모듈을 사용하면 작업하려는 이미지로 그리기 개체를 먼저 만든 다음 적용하여 다른 모양을 만들 수 있습니다. 'ImageDraw'모듈을 사용하여 그릴 수있는 일반적인 모양은 다음과 같습니다.

다음은 파이썬 베개를 사용하여 선을 그리는 구문입니다.

draw.line(xy, fill=None, width=0)

그만큼 line()메서드는 경계 상자 xy 및 캔버스의 왼쪽 상단에서 오른쪽 하단 모서리까지 선을 그립니다. 선은 색상 채우기를 사용하여 채워집니다. 기본값 없음 및 0은 각각 선택적인 매개 변수 채우기 및 너비에 대한 것입니다.

from PIL import Image, ImageDraw

img = Image.new('RGB', (500, 300), (125, 125, 125))
draw = ImageDraw.Draw(img)
draw.line((200, 100, 300, 200), fill=(0, 0, 0), width=10)

img.show()

산출

다음은 파이썬 베개를 사용하여 타원을 그리는 구문입니다.

draw.ellipse(xy, fill=None, outline=None)

그만큼 ellipse()메서드는 그릴 때 경계 상자 xy로 둘러싸인 타원을 그립니다. 모양은 색상 채우기와 색상 윤곽선의 둘레를 사용하여 채워집니다. 기본값 없음은 선택 사항 인 채우기 및 너비 매개 변수에 대한 것입니다.

from PIL import Image, ImageDraw

img = Image.new('RGB', (500, 300), (125, 125, 125))
draw = ImageDraw.Draw(img)

draw.ellipse((200, 125, 300, 200), fill=(255, 0, 0), outline=(0, 0, 0))
img.show()

산출

직사각형

다음은 파이썬 베개를 사용하여 직사각형을 그리는 구문입니다.

draw.rectangle(xy, fill=None, outline=None)

그만큼 rectangle()메서드는 그릴 때 경계 상자 xy가 지정된 사각형을 그립니다. 모양은 색상 채우기와 색상 윤곽선의 둘레를 사용하여 채워집니다. 기본값 없음은 선택 사항 인 채우기 및 너비 매개 변수에 대한 것입니다.

from PIL import Image, ImageDraw

img = Image.new('RGB', (500, 300), (125, 125, 125))
draw = ImageDraw.Draw(img)

draw.rectangle(
   (200, 125, 300, 200),
   fill=(255, 0, 0),
   outline=(0, 0, 0))
img.show()

산출

다각형

다음은 파이썬 베개를 사용하여 직사각형을 그리는 구문입니다.

draw.polygon(seq, fill=None, outline=None)

그만큼 polygon()메서드는 그리기시 순서대로 좌표 시퀀스 위치를 직선으로 연결하는 다각형을 그립니다. seq의 첫 번째와 마지막 좌표도 직선으로 연결됩니다. 모양은 색상 채우기와 색상 윤곽선의 둘레를 사용하여 채워집니다. 매개 변수 채우기 및 윤곽선은 선택 사항이며 기본값은 없음입니다.

from PIL import Image, ImageDraw

img = Image.new('RGB', (500, 300), (125, 125, 125))
draw = ImageDraw.Draw(img)

draw.polygon(
   ((200, 200), (300, 100), (250, 50)),
   fill=(255, 0, 0),
   outline=(0, 0, 0))
img.show()

산출