Python Pillow - การใช้โมดูลรูปภาพ

ในการแสดงภาพไลบรารีหมอนกำลังใช้คลาสรูปภาพอยู่ภายใน โมดูลรูปภาพภายในแพ็คเกจหมอนมีฟังก์ชั่นในตัวที่สำคัญเช่นโหลดภาพหรือสร้างภาพใหม่เป็นต้น

การเปิดหมุนและแสดงภาพ

ในการโหลดภาพเราเพียงแค่นำเข้าโมดูลภาพจากหมอนและเรียกไฟล์ Image.open()ส่งชื่อไฟล์รูปภาพ

แทนที่จะเรียกโมดูลหมอนเราจะเรียกโมดูล PIL เพื่อให้เข้ากันได้กับโมดูลรุ่นเก่าที่เรียกว่า Python Imaging Library (PIL) นั่นเป็นเหตุผลที่รหัสของเราเริ่มต้นด้วย“from PIL import Image” แทน “from Pillow import Image”.

ต่อไปเราจะโหลดภาพโดยเรียกไฟล์ Image.open() functionซึ่งส่งคืนค่าของชนิดข้อมูลออบเจ็กต์รูปภาพ การแก้ไขใด ๆ ที่เราทำกับวัตถุรูปภาพสามารถบันทึกลงในไฟล์ภาพด้วยไฟล์save()วิธี. วัตถุรูปภาพที่เราได้รับโดยใช้Image.open()ภายหลังสามารถใช้เพื่อปรับขนาดครอบตัดวาดหรือวิธีการจัดการภาพอื่น ๆ ที่เรียกใช้บนออบเจ็กต์รูปภาพ

ตัวอย่าง

ตัวอย่างต่อไปนี้แสดงให้เห็นถึงการหมุนภาพโดยใช้หมอนงูเหลือม -

from PIL import Image
#Open image using Image module
im = Image.open("images/cuba.jpg")
#Show actual Image
im.show()
#Show rotated Image
im = im.rotate(45)
im.show()

เอาต์พุต

หากคุณบันทึกโปรแกรมข้างต้นเป็น Example.py และดำเนินการโปรแกรมจะแสดงภาพต้นฉบับและภาพที่หมุนโดยใช้ยูทิลิตี้การแสดงผล PNG มาตรฐานดังต่อไปนี้ -

Actual image

Rotated image (45 degrees)

คุณสมบัติของโมดูลรูปภาพ

อินสแตนซ์ของคลาส Image มีคุณลักษณะบางอย่าง มาลองทำความเข้าใจบางส่วนตามตัวอย่าง -

Image.filename

ฟังก์ชันนี้ใช้เพื่อรับชื่อไฟล์หรือเส้นทางของรูปภาพ

>>>image = Image.open('beach1.jpg')
>>> image.filename
'beach1.jpg'

Image.format

ฟังก์ชันนี้จะส่งคืนรูปแบบไฟล์ของไฟล์รูปภาพเช่น 'JPEG', 'BMP', 'PNG' เป็นต้น

>>> image = Image.open('beach1.jpg')
>>>
>>> image.format
'JPEG'

Image.mode

ใช้เพื่อรับรูปแบบพิกเซลที่รูปภาพใช้ ค่าโดยทั่วไปคือ“ 1”“ L”“ RGB” หรือ“ CMYK”

>>> image.mode
'RGB'

ขนาดรูปภาพ

ส่งคืนทูเพิลประกอบด้วยความสูงและน้ำหนักของรูปภาพ

>>> image.size
(1280, 721)

รูปภาพความกว้าง

จะส่งกลับเฉพาะความกว้างของภาพ

>>> image.width
1280

ภาพความสูง

จะส่งกลับเฉพาะความสูงของภาพ

>>> image.height
721

Image.info

จะส่งคืนข้อมูลการถือพจนานุกรมที่เกี่ยวข้องกับรูปภาพ

>>> image.info
{'jfif': 257, 'jfif_version': (1, 1), 'dpi': (300, 300), 'jfif_unit': 1, 'jfif_density': (300, 300), 'exif': b"Exif\x00\x00MM\x00*\x00\x00\x00
....
....
\xeb\x00\x00'\x10\x00\x00\xd7\xb3\x00\x00\x03\xe8"}

Image.palette

จะส่งคืนตารางจานสีถ้ามี

>>> image.palette

Output above - ไม่มี