Computer >> Máy Tính >  >> Lập trình >> Python

Làm việc với Hình ảnh trong Python?

Một trong những thư viện phổ biến nhất và được coi là thư viện mặc định của python để xử lý ảnh là Pillow. Pillow là phiên bản cập nhật của Thư viện hình ảnh Python hoặc PIL và hỗ trợ một loạt chức năng thao tác hình ảnh đơn giản và nâng cao. Nó cũng là cơ sở để hỗ trợ hình ảnh đơn giản trong các thư viện Python khác như sciPy và Matplotlib.

Lắp đặt gối

Trước khi bắt đầu, chúng ta cần trăn và gối. Đối với Linux, gối có thể sẽ có ở đó, vì hương vị chính của linux bao gồm Fedora, Debian / Ubuntu và ArchLinux bao gồm Pillow trong các gói trước đó đã chứa PIL.

Cách dễ nhất để cài đặt nó là sử dụng pip:

pip install pillow

Cách tải và hiển thị hình ảnh

Trước tiên, chúng tôi cần một hình ảnh thử nghiệm để chứng minh một số tính năng quan trọng của việc sử dụng thư viện python Pillow.

Tôi đã sử dụng ảnh tượng_tự_chính làm hình ảnh mẫu. Tải xuống hình ảnh và lưu nó trong thư mục làm việc hiện tại của bạn.

#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()

Kết quả

JPEG
RGB
(400, 260)

Làm việc với Hình ảnh trong Python?

Phía trên hình ảnh được tải trực tiếp bằng cách sử dụng hàm open () trên lớp Hình ảnh. Thao tác này trả về một đối tượng hình ảnh có chứa dữ liệu pixel cho hình ảnh cũng như thông tin chi tiết về hình ảnh.

Thuộc tính định dạng trên hình ảnh sẽ báo cáo định dạng hình ảnh (ví dụ:png, jpeg), chế độ sẽ báo cáo định dạng kênh pixel (ví dụ:CMYK hoặc RGB) và kích thước sẽ báo cáo kích thước của hình ảnh theo pixel (ví dụ:400 * 260)

Hàm show () sẽ hiển thị hình ảnh bằng ứng dụng mặc định của hệ điều hành.

Chuyển hình ảnh sang thang độ xám

Để chuyển đổi một hình ảnh sang thang độ xám, hiển thị và sau đó lưu nó rất dễ dàng, chỉ cần làm như sau:

#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')

Kết quả

Làm việc với Hình ảnh trong Python?

Sau khi chạy chương trình trên, một tệp “tượng_of_unity_gs.jpg” được tạo trong thư mục làm việc hiện tại của bạn.

Chuyển đổi sang loại hình ảnh khác

Chuyển đổi hình ảnh của một loại (jpeg) sang một loại khác (giả sử, png) cũng rất dễ dàng.

from PIL import Image

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


Một tệp hình ảnh mới được tạo và lưu trong thư mục mặc định của chúng tôi.

Thay đổi kích thước hình ảnh

Kích thước (kích thước) của tệp hình ảnh hiện tại của chúng tôi là 400 * 260px. Trong trường hợp chúng tôi muốn thay đổi kích thước và làm cho nó có kích thước 440 * 600px, có thể được thực hiện bằng cách:

từ Hình ảnh nhập PIL


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


Tệp mới ‘tượng_of_unit_440 * 600.jpg’ có kích thước 440 * 600px được tạo và lưu trong thư mục làm việc hiện tại của bạn.


Làm việc với Hình ảnh trong Python?



Như bạn có thể thấy, điều này phóng to hình ảnh gốc của chúng tôi thành kích thước mong muốn thay vì cắt nó, điều mà bạn có thể không muốn.

Trong trường hợp bạn muốn cắt hình ảnh hiện có, bạn có thể làm điều đó bằng cách sử dụng,

image.crop(box=None)

Xoay hình ảnh

Chương trình bên dưới tải một hình ảnh, xoay nó 45 độ và hiển thị nó bằng trình xem bên ngoài.


from PIL import Image

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


Làm việc với Hình ảnh trong Python?


Tạo hình thu nhỏ

Chương trình dưới đây sẽ tạo hình thu nhỏ 128 * 128 của tất cả các hình ảnh jpeg trong thư mục làm việc hiện tại của bạn.

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")


Kết quả

Làm việc với Hình ảnh trong Python?

Sẽ trả về các hình thu nhỏ của tất cả tệp jpeg trong thư mục hiện tại của tôi (c:\ python \ python361) bao gồm cả hình ảnh ‘tượng_of_unity.jpg’.