Gối Python - Làm việc với hình ảnh

Chương này trình bày chi tiết về các chủ đề bao gồm cách đọc và lưu hình ảnh trong Pillow.

Đọc hình ảnh

Đọc và viết hình ảnh bằng thư viện gối rất đơn giản, với sự trợ giúp của PIL.Image module function.

Cú pháp

Image.open(fp, mode=’r’)

Ở đâu

  • fp- Tên tệp (chuỗi), đối tượng pathlib.Path hoặc một đối tượng tệp. Đối tượng tệp phải triển khai các phương thức read (), seek () và tell () và được mở ở chế độ nhị phân.

  • mode - Đó là một đối số tùy chọn, nếu được đưa ra, phải là 'r'.

  • Return value - Một đối tượng Image.

  • Error - Nếu không tìm thấy tệp, hoặc không thể mở và nhận dạng hình ảnh.

Thí dụ

Sau đây là một ví dụ rất đơn giản, nơi chúng tôi sẽ mở một hình ảnh có định dạng bất kỳ (Chúng tôi đang sử dụng.jpg), hiển thị nó trong một cửa sổ và sau đó lưu nó (vị trí mặc định) với định dạng tệp khác (.png).

from PIL import Image
image = Image.open('beach1.jpg')
image.show()
image.save('beach1.bmp')
image1 = Image.open('beach1.bmp')
image1.show()

Trong ví dụ trên, chúng tôi nhập mô-đun Hình ảnh từ thư viện PIL và sau đó, gọi Image.open()chức năng đọc hình ảnh từ đĩa trả về kiểu dữ liệu đối tượng hình ảnh. Nó sẽ tự động xác định loại tệp bằng cách xem nội dung tệp. Để đọc,open() hàm chấp nhận một filename(string), một path object hoặc một image(file) vật.

Vì vậy, bằng cách sử dụng hàm open (), chúng ta thực sự đang đọc hình ảnh. Image.open () sẽ đọc hình ảnh và lấy tất cả thông tin liên quan từ hình ảnh.

Đầu ra

Nếu bạn lưu chương trình trên dưới dạng example.py và thực thi, chương trình sẽ hiển thị các hình ảnh gốc (.jpg) và đã lưu (.bmp) bằng cách sử dụng tiện ích hiển thị PNG tiêu chuẩn, như sau:

Actual image

Resaved image (.bmp)

Lưu hình ảnh

Hàm save () ghi hình ảnh vào tệp. Giống như đối với hàm read (open ()), hàm save () chấp nhận tên tệp, đối tượng đường dẫn hoặc đối tượng tệp đã được mở để ghi.

Cú pháp

Image.save(fp, format=None, **params)

Ở đâu,

  • fp - Tên tệp (chuỗi), đối tượng pathlib.Path hoặc đối tượng tệp.

  • format- Ghi đè định dạng tùy chọn. Nếu bỏ qua, định dạng sẽ sử dụng được xác định từ phần mở rộng tên tệp. Nếu một đối tượng tệp được sử dụng thay vì tên tệp, thì tham số này phải luôn được sử dụng.

  • options - Các thông số bổ sung cho trình ghi hình ảnh.

  • Return value - Không có

  • KeyError - Nếu không thể xác định định dạng đầu ra từ tên tệp, hãy sử dụng tùy chọn định dạng để giải quyết vấn đề này.

  • IOError - Nếu tệp không thể được ghi, tệp có thể đã được tạo và có thể chứa một phần dữ liệu.

Tóm lại, cú pháp trên sẽ lưu hình ảnh dưới tên tệp đã cho. Nếu không có định dạng nào được chỉ định, thì nó dựa trên phần mở rộng tên tệp hiện tại. Để cung cấp các hướng dẫn bổ sung cho người viết, chúng tôi sử dụng các tùy chọn từ khóa.

image.save('beach1.bmp')

Trong ví dụ trên, nó lưu tệp dựa trên phần mở rộng tệp để xác định loại hình ảnh, chẳng hạn - ở trên sẽ tạo tệp bmp trong thư mục làm việc hiện tại của chúng ta.

Bạn cũng có thể chỉ định rõ ràng loại tệp dưới dạng tham số thứ hai -

image.save('beach1.gif', 'GIF')