หมอน 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()

เอาต์พุต