หมอน Python - โมดูล ImageDraw
‘ImageDraw’โมดูลให้การสนับสนุนกราฟิก 2D อย่างง่ายสำหรับ Image Object โดยทั่วไปเราใช้โมดูลนี้เพื่อสร้างภาพใหม่ใส่คำอธิบายประกอบหรือตกแต่งภาพที่มีอยู่และเพื่อสร้างกราฟิกได้ทันทีสำหรับการใช้งานเว็บ
คำสั่งกราฟิกสนับสนุนการวาดรูปร่างและคำอธิบายประกอบของข้อความ
รูปภาพสามารถคิดได้ดีว่าเป็นอาร์เรย์พิกเซลสองมิติ (องค์ประกอบรูปภาพ) พิกเซลคือจุดสีที่เล็กที่สุดที่รองรับ
ต้นกำเนิดของระบบพิกัดสองมิติที่ ImageDraw ใช้อยู่ในไฟล์ upper left corner ของภาพ
โทนสีหมอนที่เราใช้คือ RGB การแสดงและการสนับสนุน RGB สีมีให้โดยโมดูลImageColor.
บิตแมป OpenType หรือ TrueType เป็นแบบอักษรที่ยอมรับได้สำหรับคำอธิบายประกอบข้อความ
คำสั่งการวาดส่วนใหญ่อาจต้องใช้พารามิเตอร์กล่องขอบเขตที่ระบุพื้นที่บนรูปภาพที่จะใช้คำสั่ง
ลำดับของพิกัดสามารถแสดงเป็น [(x0, y0), (x1, y1), … (xn, yn)]
สำหรับคำสั่งการวาดบางคำเราต้องการค่ามุม
ตัวอย่าง
ตัวอย่าง python ต่อไปนี้ลากเส้นข้ามรูปภาพที่กำหนด -
#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"
ตัวอย่าง
ต่อไปนี้ตัวอย่าง python วาดข้อความบนภาพที่กำหนด -
#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 และผืนผ้าใบ เส้นเติมโดยใช้สีเติม ค่าดีฟอลต์ของ None และ 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 เมื่อวาด รูปร่างถูกเติมโดยใช้การเติมสีและเส้นรอบวงในโครงร่างสี ค่าดีฟอลต์ของ None ใช้สำหรับการเติมพารามิเตอร์และความกว้างซึ่งเป็นทางเลือก
ตัวอย่าง
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 เมื่อวาด รูปร่างถูกเติมโดยใช้การเติมสีและเส้นรอบวงในโครงร่างสี ค่าดีฟอลต์ของ None ใช้สำหรับการเติมพารามิเตอร์และความกว้างซึ่งเป็นทางเลือก
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 เมื่อวาด พิกัดแรกและตัวสุดท้ายใน 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()