Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

การทำงานกับรูปภาพใน Python?


หนึ่งในไลบรารี่เริ่มต้นที่ได้รับความนิยมมากที่สุดและถือเป็นไลบรารีเริ่มต้นของ python สำหรับการประมวลผลภาพคือ Pillow Pillow เป็นเวอร์ชันปรับปรุงของ Python Image Library หรือ PIL และรองรับฟังก์ชันการจัดการรูปภาพที่เรียบง่ายและขั้นสูงมากมาย นอกจากนี้ยังเป็นพื้นฐานสำหรับการรองรับรูปภาพอย่างง่ายในไลบรารี Python อื่นๆ เช่น sciPy และ Matplotlib

การติดตั้งหมอน

ก่อนที่เราจะเริ่มต้น เราต้องการ python และ pillow ในกรณีของ Linux หมอนอาจมีอยู่แล้วเนื่องจากลินุกซ์รุ่นหลักๆ เช่น Fedora, Debian/Ubuntu และ ArchLinux รวมหมอนไว้ในแพ็คเกจที่ก่อนหน้านี้มี PIL

วิธีที่ง่ายที่สุดในการติดตั้งคือการใช้ pip:

pip install pillow

วิธีการโหลดและแสดงภาพ

อันดับแรก เราต้องการภาพทดสอบเพื่อสาธิตคุณลักษณะที่สำคัญบางประการของการใช้ไลบรารี่ python Pillow

ฉันใช้รูปภาพ Statue_of_unity เป็นภาพตัวอย่าง ดาวน์โหลดรูปภาพและบันทึกไว้ในไดเร็กทอรีการทำงานปัจจุบันของคุณ

#Load and show an image with Pillow
from PIL import Image

#Load the image
img = Image.open('statue_of_unity.jpg')

#Get basic details about the image
print(img.format)
print(img.mode)
print(img.size)

#show the image
img.show()

ผลลัพธ์

JPEG
RGB
(400, 260)

การทำงานกับรูปภาพใน Python?

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

คุณสมบัติรูปแบบในรูปภาพจะรายงานรูปแบบรูปภาพ (เช่น png, jpeg) โหมดจะรายงานรูปแบบช่องพิกเซล (เช่น CMYK หรือ RGB) และขนาดจะรายงานขนาดของรูปภาพเป็นพิกเซล (เช่น 400*260)

ฟังก์ชัน show() จะแสดงรูปภาพโดยใช้แอปพลิเคชันเริ่มต้นของระบบปฏิบัติการ

แปลงรูปภาพเป็นระดับสีเทา

หากต้องการแปลงรูปภาพเป็นโทนสีเทา ให้แสดงภาพแล้วบันทึกได้อย่างง่ายดาย เพียงดำเนินการดังต่อไปนี้:

#Import required library
from PIL import Image
#Read an image & convert it to gray-scale
image = Image.open('statue_of_unity.jpg').convert('L')
#Display image
image.show()
#Save image
image.save('statue_of_unity_gs.jpg')

ผลลัพธ์

การทำงานกับรูปภาพใน Python?

หลังจากรันโปรแกรมข้างต้น ไฟล์ “statue_of_unity_gs.jpg” จะถูกสร้างขึ้นในไดเร็กทอรีการทำงานปัจจุบันของคุณ

แปลงเป็นรูปภาพประเภทอื่น

การแปลงรูปภาพประเภทหนึ่ง (jpeg) เป็นอีกประเภทหนึ่ง (เช่น png) นั้นง่ายมากเช่นกัน

from PIL import Image

image = Image.open('statue_of_unity.jpg')
image.save('statue_of_unity.png')


ไฟล์รูปภาพใหม่ถูกสร้างขึ้นและบันทึกในไดเร็กทอรีเริ่มต้นของเรา

ปรับขนาดรูปภาพ

ขนาด (ขนาด) ของไฟล์ภาพปัจจุบันของเราคือ 400 * 260px ในกรณีที่เราต้องการปรับขนาดและทำให้เป็นขนาด 440 * 600px สามารถทำได้โดย:

จากอิมเมจนำเข้า PIL


image = Image.open('statue_of_unity.jpg')
newImage = image.resize((440, 600))
newImage.save('statue_of_unity_440&600.jpg')


ไฟล์ใหม่ 'statue_of_unit_440*600.jpg' ขนาด 440 *600px ถูกสร้างและบันทึกในไดเร็กทอรีการทำงานปัจจุบันของคุณ


การทำงานกับรูปภาพใน Python?



อย่างที่คุณเห็น ภาพนี้จะขยายภาพต้นฉบับของเราให้เป็นขนาดที่ต้องการแทนที่จะครอบตัดซึ่งคุณอาจไม่ต้องการ

ในกรณีที่คุณต้องการครอบตัดรูปภาพที่มีอยู่ คุณสามารถทำได้โดยใช้

image.crop(box=None)

หมุนภาพ

ด้านล่างโปรแกรมโหลดรูปภาพ หมุน 45 องศา และแสดงโดยใช้โปรแกรมดูภายนอก


from PIL import Image

image = Image.open('statue_of_unity.jpg')
image.rotate(45).show()


การทำงานกับรูปภาพใน Python?


สร้างภาพขนาดย่อ

โปรแกรมด้านล่างจะสร้างภาพขนาดย่อ 128*128 ของภาพ jpeg ทั้งหมดในไดเร็กทอรีการทำงานปัจจุบันของคุณ

from PIL import Image
import glob, os

size = 128, 128

for infile in glob.glob("*.jpg"):
file, ext = os.path.splitext(infile)
image = Image.open(infile)
image.thumbnail(size, Image.ANTIALIAS)
image.save(file + ".thumbnail", "JPEG")


ผลลัพธ์

การทำงานกับรูปภาพใน Python?

จะส่งคืนภาพขนาดย่อของไฟล์ jpeg ทั้งหมดในไดเรกทอรีปัจจุบันของฉัน (c:\python\python361) รวมถึงรูปภาพ 'statue_of_unity.jpg'