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 - ไม่มี