Gối Python - Mô-đun ImageDraw
Các ‘ImageDraw’mô-đun cung cấp hỗ trợ đồ họa 2D đơn giản cho Đối tượng Hình ảnh. Nói chung, chúng tôi sử dụng mô-đun này để tạo hình ảnh mới, chú thích hoặc chỉnh sửa hình ảnh hiện có và tạo đồ họa nhanh chóng để sử dụng trên web.
Các lệnh đồ họa hỗ trợ việc vẽ các hình dạng và chú thích văn bản.
Hình ảnh có thể được coi là một mảng pixel hai chiều (các yếu tố hình ảnh). Một pixel là điểm màu nhỏ nhất được hỗ trợ.
Nguồn gốc của hệ tọa độ hai chiều được ImageDraw sử dụng, là upper left corner của hình ảnh.
Bảng màu gối chúng tôi sử dụng là RGB. Mô-đun hỗ trợ và biểu diễn màu RGB được cung cấpImageColor.
bitmap, OpenType hoặc TrueType là các phông chữ được chấp nhận cho các chú thích văn bản.
Hầu hết các lệnh vẽ có thể yêu cầu tham số hộp giới hạn chỉ định vùng trên hình ảnh mà lệnh sẽ được áp dụng.
Một dãy tọa độ có thể được biểu diễn dưới dạng [(x0, y0), (x1, y1),… (xn, yn)].
Đối với một số lệnh vẽ, chúng tôi yêu cầu giá trị góc.
Thí dụ
Ví dụ về python sau đây vẽ một đường ngang qua hình ảnh đã cho:
#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()
Đầu ra
Nếu bạn lưu chương trình trên dưới dạng example.py và thực thi, chương trình sẽ vẽ một đường ngang qua hình ảnh và hiển thị bằng tiện ích hiển thị PNG tiêu chuẩn, như sau:
Tranh sơn dầu
ImageDraw là một bề mặt có thể kéo được Pillow (tức là canvas) của một Hình ảnh.
ImageDraw.Draw (img) trả về biểu diễn canvas có thể vẽ của tham số Image img. Nền của canvas là hình ảnh "img".
Thí dụ
Ví dụ về python sau đây vẽ văn bản trên hình ảnh đã cho:
#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()
Đầu ra
Vẽ Hình dạng bằng mô-đun 'ImageDraw'
Mô-đun ImageDraw cho phép chúng ta tạo ra các hình dạng khác nhau bằng cách đầu tiên tạo một đối tượng vẽ với hình ảnh bạn muốn làm việc và sau đó áp dụng nó. Một số hình dạng phổ biến mà chúng ta có thể vẽ bằng mô-đun 'ImageDraw' như sau:
Hàng
Sau đây là cú pháp để vẽ một đường bằng gối python:
draw.line(xy, fill=None, width=0)
Các line()phương pháp vẽ một đường thẳng từ góc trên bên trái đến góc dưới bên phải của hộp giới hạn xy và canvas. Dòng được tô bằng tô màu. Giá trị mặc định của Không có và 0 tương ứng là cho các tham số điền và chiều rộng là tùy chọn.
Thí dụ
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()
Đầu ra
Nhật thực
Sau đây là cú pháp để vẽ một hình elip bằng gối python:
draw.ellipse(xy, fill=None, outline=None)
Các ellipse()phương pháp vẽ hình elip bao quanh bởi hộp giới hạn xy khi vẽ. Hình dạng được tô bằng cách sử dụng tô màu và chu vi trong đường viền màu. Giá trị mặc định của Không dành cho các tham số điền và chiều rộng là tùy chọn.
Thí dụ
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()
Đầu ra
Hình chữ nhật
Sau đây là cú pháp để vẽ một hình chữ nhật sử dụng gối python:
draw.rectangle(xy, fill=None, outline=None)
Các rectangle()phương pháp vẽ hình chữ nhật cho trước hộp giới hạn xy trên draw. Hình dạng được tô bằng cách sử dụng tô màu và chu vi trong đường viền màu. Giá trị mặc định của Không dành cho các tham số điền và chiều rộng là tùy chọn.
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()
Đầu ra
Đa giác
Sau đây là cú pháp để vẽ một hình chữ nhật sử dụng gối python:
draw.polygon(seq, fill=None, outline=None)
Các polygon()phương pháp vẽ một đa giác nối với các đoạn thẳng các vị trí của dãy tọa độ seq trên bản vẽ. Tọa độ đầu tiên và tọa độ cuối cùng trong seq cũng được nối với nhau bằng một đường thẳng. Hình dạng được tô bằng cách sử dụng tô màu và chu vi trong đường viền màu. Các tham số điền và đường viền là tùy chọn với các giá trị mặc định Không có.
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()