Что Python-3 использует вместо PIL для манипулирования изображениями?
Pillow
из PyPI, который должен быть заменой PIL
; это предпочтительный пакет на Python 2 тоже.
Что Python-3 использует вместо PIL для манипулирования изображениями?
Pillow
из PyPI, который должен быть заменой PIL
; это предпочтительный пакет на Python 2 тоже.
Ответы:
Подушка "Friendly PIL fork" работает на Python 2 и 3 . Проверьте проект Github для матрицы поддержки и так далее.
pip3 install Image
(я использовал подушку, не зная), и выfrom PIL import Image
. Он также поддерживает все основные платформы в настоящее время. При поиске PIL для python3, это определенно выбор.
Кристофу Гольке удалось собрать PIL (только для Windows) для версий Python до 3.3: http://www.lfd.uci.edu/~gohlke/pythonlibs/
Я попробовал его версию PIL с Python 3.2 и открыть изображение / создать / манипулировать пикселями / сохранить всю работу.
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 является большой платформой для создания приложений с графическим интерфейсом.
По состоянию на 30 марта 2012 года я пытался и не смог получить sloonz fork на GitHub для открытия изображений. Я получил это, чтобы скомпилировать нормально, но на самом деле это не сработало. Я также попытался собрать библиотеку Гольке, и она тоже скомпилировалась, но не смог открыть ни одного изображения. Кто-то упоминал PythonMagick выше, но он компилируется только в Windows. Смотрите PythonMagick в wxPython wiki .
Последнее обновление PIL произошло в 2009 году, и хотя на его веб-сайте написано, что они работают над портом Python 3, прошло уже 3 года, и список рассылки остыл.
Чтобы решить мою проблему манипулирования изображениями в Python 3, я использую subprocess.call()
для выполнения команд оболочки ImageMagick. Этот метод работает.
Вам нужна библиотека Pillow , вот как установить ее на Python 3:
pip3 install Pillow
Если это не работает для вас (это должно), попробуйте нормально pip
:
pip install Pillow
В зависимости от того, что необходимо, scikit-image может быть лучшим выбором, с манипуляциями, выходящими далеко за пределы PIL и текущей версии Pillow. Очень ухоженный, по крайней мере, столько же, сколько и Подушка. Кроме того, базовые структуры данных взяты из Numpy и Scipy, что делает его код невероятно совместимым. Примеры, которые подушка не может обработать:
Вы можете увидеть его силу в галерее . Эта статья дает хорошее введение в это. Удачи!
Если вы используете Python3, вы также можете использовать библиотеку PILasOPENCV, которая работает в Python 2 и 3. Вызовы API-функций такие же, как в PIL или подушке, но внутренне она работает с OpenCV и Numpy для загрузки, сохранения и манипулирования изображениями. Загляните на https://github.com/bunkahle/PILasOPENCV или установите его с помощью pip install PILasOPENCV. Не все функции PIL были смоделированы, но работают наиболее распространенные функции.