Библиотека изображений для Python 3 - PullRequest
154 голосов
/ 09 октября 2010

Что Python-3 использует вместо PIL для манипулирования изображениями?

Ответы [ 8 ]

99 голосов
/ 22 октября 2012

«Дружелюбная вилка PIL» Подушка работает на Python 2 и 3 .Проверьте проект Github для матрицы поддержки и т. Д.

19 голосов
/ 30 апреля 2012

Кристофу Гольке удалось построить PIL (только для Windows) для версий Python до 3.3: http://www.lfd.uci.edu/~gohlke/pythonlibs/

Я попробовал его версию PIL с Python 3.2 и открыть / создать / манипулировать пикселями / сохранитьвсе работают.

14 голосов
/ 30 августа 2012

Qt очень хорошо работает с графикой.На мой взгляд, он более универсален, чем PIL.

Вы получаете все функции, которые вам нужны для манипуляции графикой, но есть также векторная графика и даже поддержка реальных принтеров.И все это в одном унифицированном API, QPainter.

Чтобы использовать Qt, вам нужна привязка Python для него: PySide или PyQt4 .
Они оба поддерживают Python 3.

Вот простой пример, который загружает изображение JPG, рисует сглаженный круградиуса 10 в координатах (20, 20) с цветом пикселя, который был в этих координатах, и сохраняет измененное изображение в виде файла 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')

Но учтите, что это решение довольно «тяжеловесное», потому что Qt является большой платформой для создания приложений с графическим интерфейсом.

7 голосов
/ 30 марта 2012

По состоянию на 30 марта 2012 года я пытался и не смог получить sloonz fork на GitHub для открытия изображений. Я получил его для компиляции нормально, но на самом деле это не сработало. Я также попытался собрать библиотеку Гольке, и она тоже скомпилировалась, но не смог открыть ни одного изображения. Кто-то упоминал PythonMagick выше, но он компилируется только в Windows. Смотрите PythonMagick на wxPython wiki .

Последнее обновление PIL произошло в 2009 году, и хотя на его веб-сайте говорится, что они работают над портом Python 3, прошло уже 3 года, а список рассылки остыл.

Чтобы решить проблему манипуляции с изображениями в Python 3, я использую subprocess.call() для выполнения команд оболочки ImageMagick. Этот метод работает.

См. документация модуля подпроцесса .

6 голосов
/ 16 марта 2017

Вам нужна библиотека Подушка , вот как установить ее на Python 3:

pip3 install Pillow

Если это не работает для вас (должно быть), попробуйте нормально pip:

pip install Pillow
6 голосов
/ 30 августа 2012

Вы можете использовать мой пакет mahotas на Python 3. Он основан на numpy, а не на PIL.

2 голосов
/ 18 июля 2018

В зависимости от того, что необходимо, scikit-image может быть лучшим выбором, с манипуляциями, выходящими далеко за пределы PIL и текущей версии Pillow. Очень ухоженный, по крайней мере, столько же, сколько и Подушка. Кроме того, базовые структуры данных взяты из Numpy и Scipy, что делает его код невероятно совместимым. Примеры, с которыми подушка не может справиться:

Region Adjacency Graph Merging

Radon Transform

Histogram of oriented gradients

Approximate and subdivide polygons

Вы можете увидеть его силу в галерее . Эта статья дает хорошее введение в нее. Удачи!

0 голосов
/ 11 апреля 2019

Если вы находитесь на Python3, вы также можете использовать библиотеку PILasOPENCV, которая работает в Python 2 и 3. Вызовы API-функций такие же, как в PIL или подушке, но внутренне она работает с OpenCV и numpy для загрузки, сохранения и управления изображениями.Взгляните на https://github.com/bunkahle/PILasOPENCV или установите его с помощью pip install PILasOPENCV.Не все функции PIL были смоделированы, но работают наиболее распространенные функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...