Библиотека изображений для Python 3

154

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

Banx
источник
Вы проверяли медиа-модуль? (импорт СМИ)
инспектор
@ inspectorG4dget: медиа отсутствует в стандартной библиотеке python3
banx
Я тоже не думал, что PIL был стандартным. Но похоже , что я не прав
inspectorG4dget
2
@ inspectorG4dget: Нет, вы правы, PIL отсутствует в стандартной библиотеке.
Янус Троелсен
Нужно установить Pillowиз PyPI, который должен быть заменой PIL; это предпочтительный пакет на Python 2 тоже.
Антти Хаапала

Ответы:

98

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

Янус Троелсен
источник
4
Он все еще активно разрабатывается по состоянию на октябрь 2014 года, имеет хороший документ , вы можете pip3 install Image(я использовал подушку, не зная), и выfrom PIL import Image . Он также поддерживает все основные платформы в настоящее время. При поиске PIL для python3, это определенно выбор.
Йош
19

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

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

xob
источник
14

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 года я пытался и не смог получить sloonz fork на GitHub для открытия изображений. Я получил это, чтобы скомпилировать нормально, но на самом деле это не сработало. Я также попытался собрать библиотеку Гольке, и она тоже скомпилировалась, но не смог открыть ни одного изображения. Кто-то упоминал PythonMagick выше, но он компилируется только в Windows. Смотрите PythonMagick в wxPython wiki .

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

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

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

s0mebody
источник
6

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

luispedro
источник
6

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

pip3 install Pillow

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

pip install Pillow
speedplane
источник
3

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

График смежности регионов

Радон Преобразование

Гистограмма ориентированных градиентов

Приближенные и подразделенные полигоны

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

Linhares
источник
0

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

bunkus
источник