Thư viện hình ảnh cho Python 3


154

Python-3 sử dụng thay vì PIL để thao tác với hình ảnh là gì?


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

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

Tôi cũng không nghĩ rằng PIL là tiêu chuẩn. Nhưng có vẻ như tôi đã sai
thanh traG4dget

2
@ InspectorG4dget: Không, bạn đúng, PIL không có trong thư viện chuẩn.
Janus Troelsen

Người ta phải cài đặt Pillowtừ PyPI, một sự thay thế thả vào PIL; đây cũng là gói ưu tiên trên Python 2.
Antti Haapala

Câu trả lời:


98

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


4
vẫn đang tích cực được phát triển vào tháng 10 năm 2014, có một tài liệu hay , bạn có thể pip3 install Image(tôi đang sử dụng gối mà không biết), còn bạnfrom PIL import Image . Nó cũng hỗ trợ tất cả các nền tảng chính bây giờ. Khi tìm kiếm một PIL cho python3, đây chắc chắn là sự lựa chọn.
Yosh

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 đã thử phiên bản PIL của anh ấy với Python 3.2 và thao tác mở / tạo / pixel ảnh / lưu tất cả công việc.


14

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

Bạn nhậ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 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 tải hình ảnh JPG, vẽ một vòng tròn khử răng cưa bán kính 10 tại tọa độ (20, 20) với màu của pixel ở các tọa độ đó và lưu hình ảnh đã sửa đổi 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 nề', vì Qt là một khung lớn để tạo các ứng dụng GUI.


7

Kể từ ngày 30 tháng 3 năm 2012, tôi đã thử và thất bại trong việc lấy 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ự hoạt động. Tôi cũng đã thử xây dựng thư viện của gohlke và nó cũng đã biên dịch nhưng không thể mở 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 trên wiki wxPython .

PIL được cập nhật lần cuối vào năm 2009 và trong khi trang web của họ nói rằng họ đang làm việc trên cổng Python 3, thì đã 3 năm và danh sách gửi thư đã bị 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 các lệnh shell ImageMagick. Phương pháp này hoạt động.

Xem tài liệu mô-đun quy trình con .


6

Bạn có thể sử dụng gói mahotas của tôi trên Python 3. Nó dựa trên numpy thay vì dựa trên PIL.


6

Bạn muốn thư viện Gối , đây là cách cài đặt nó trên Python 3:

pip3 install Pillow

Nếu điều đó không hiệu quả với bạn (nó nên), hãy thử bình thường pip:

pip install Pillow

3

Tùy thuộc vào những gì cần thiết, hình ảnh scikit có thể là lựa chọn tốt nhất, với các thao tác vượt xa PIL và phiên bản hiện tại của Gối. Duy trì rất tốt, ít nhất là nhiều như Gối. Ngoài ra, các cấu trúc dữ liệu cơ bản là từ Numpy và Scipy, làm cho mã của nó có khả năng tương tác vô cùng. Ví dụ mà gối không thể xử lý:

Sáp nhập đồ thị vùng

Biến đổi radon

Biểu đồ độ dốc định hướng

Đa giác gần đúng và chia nhỏ

Bạn có thể thấy sức mạnh của nó trong bộ sưu tập . Bài viết này cung cấp một giới thiệu tuyệt vời cho nó. Chúc may mắn!


0

Nếu bạn đang dùng Python3, bạn cũng có thể sử dụng thư viện PILasOPENCV hoạt động trong Python 2 và 3. Các lệnh gọi api chức năng giống như trong PIL hoặc gối nhưng bên trong nó hoạt động với OpenCV và gọn gàng để tải, lưu và xử lý hình ảnh. Hãy xem https://github.com/bunkahle/PILasOPENCV hoặc cài đặt nó với pip cài đặt PILasOPENCV. Không phải tất cả các chức năng PIL đã được mô phỏng nhưng các chức năng phổ biến nhất đều hoạt động.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.