2010-10-09 65 views
141

Python-3 sử dụng thay vì PIL để thao tác hình ảnh là gì?Thư viện hình ảnh cho Python 3

+0

Bạn đã kiểm tra mô-đun phương tiện? (phương tiện truyền thông nhập khẩu) – inspectorG4dget

+0

@ inspectorG4dget: phương tiện truyền thông không có trong thư viện chuẩn của python3 – banx

+0

Tôi không nghĩ rằng PIL là tiêu chuẩn hoặc.Nhưng có vẻ như tôi sai – inspectorG4dget

Trả lời

7

Tính đến ngày 30 tháng 3 năm 2012, tôi đã cố gắng và thất bại trong việc sử dụng ngã ba sloonz trên GitHub để mở hình ảnh. Tôi đã nhận nó để biên dịch ok, nhưng nó đã không thực sự làm việc. Tôi cũng đã cố gắng xây dựng thư viện của gohlke, và nó cũng biên dịch nhưng không mở được bất kỳ hình ảnh nào. Ai đó đã đề cập đến PythonMagick ở trên, nhưng nó chỉ biên dịch trên Windows. Xem PythonMagick on the wxPython wiki.

PIL được cập nhật lần cuối vào năm 2009 và trong khi trang web cho biết họ đang làm việc trên cổng Python 3, đã 3 năm và danh sách gửi thư trở nên lạnh.

Để giải quyết vấn đề thao tác hình ảnh Python 3 của tôi, tôi đang sử dụng subprocess.call() để thực thi lệnh trình bao ImageMagick. Phương thức này hoạt động.

Xem the subprocess module documentation.

19

Christoph Gohlke quản lý để xây dựng PIL (chỉ dành cho Windows) cho các phiên bản python lên đến 3.3: http://www.lfd.uci.edu/~gohlke/pythonlibs/

tôi đã cố gắng phiên bản của ông PIL với Python 3.2, và hình ảnh mở/tạo thao tác/pixel/lưu tất cả công việc.

6

Bạn có thể sử dụng gói của mình mahotas trên Python 3. Nó dựa trên cơ sở dựa trên chứ không phải dựa trên PIL.

13

Qt hoạt động rất tốt với đồ họa. Theo tôi, nó linh hoạt hơn PIL.

Bạn có tất cả các tính năng bạn muốn cho thao tác đồ họa, nhưng cũng có đồ họa vector và thậm chí hỗ trợ cho các máy in thực. Và tất cả điều đó trong một API thống nhất, QPainter.

Để sử dụng Qt, bạn cần một ràng buộc Python cho nó: PySide hoặc PyQt4.
Cả hai đều hỗ trợ Python 3.

Dưới đây là một ví dụ đơn giản mà tải một hình ảnh JPG, vẽ một vòng tròn antialiased bán kính tại tọa độ (20, 20) với màu sắc của pixel đó là tại những tọa độ đó và lưu hình ảnh đã chỉnh sửa dưới dạng tệp PNG:

from PySide.QtCore import * 
from PySide.QtGui import * 

app = QCoreApplication([]) 

img = QImage('input.jpg') 

g = QPainter(img) 
g.setRenderHint(QPainter.Antialiasing) 
g.setBrush(QColor(img.pixel(20, 20))) 
g.drawEllipse(QPoint(20, 20), 10, 10) 
g.end() 

img.save('output.png') 

Nhưng xin lưu ý rằng giải pháp này khá 'nặng', vì Qt là một khung lớn để tạo các ứng dụng GUI.

91

"Ngã ba PIL thân thiện" Pillow hoạt động trên Python 2 và 3. Kiểm tra các Github project cho ma trận hỗ trợ và như vậy.

+2

Đó là [vẫn đang được phát triển tích cực] (https://github.com/python-pillow/Pillow/releases) cho tháng 10 năm 2014, [có một tài liệu hay] (http://pillow.readthedocs.org/index. html), bạn có thể 'pip3 install Image' (tôi đã sử dụng gối mà không biết), và [bạn' từ PIL import Image'] (http://pillow.readthedocs.org/en/latest/handbook/tutorial.html) . Nó cũng hỗ trợ [tất cả các nền tảng chính] (http://pillow.readthedocs.org/en/latest/installation.html#platform-support) ngay bây giờ. Khi tìm kiếm một PIL cho python3, điều này chắc chắn là sự lựa chọn. – Yosh

4

Bạn muốn Pillow thư viện, đây là làm thế nào để cài đặt nó trên Python 3:

pip3 install Pillow 

Nếu điều đó không làm việc cho bạn (nó nên), hãy thử bình thường pip:

pip install Pillow 
Các vấn đề liên quan