Как подключить pil в python
Перейти к содержимому

Как подключить pil в python

  • автор:

Основные возможности библиотеки Python Imaging Library / Pillow / PIL

PIL, известная как библиотека Python Imaging Library, может быть использована для работы с изображениями достаточно легким способом. У PIL не было никаких изменений и развития с 2009. Поэтому, добрые пользователи этого сайта предложили взглянуть на Pillow еще раз. Эта статья поможет вам узнать как пользоваться Pillow.

Что такое Pillow?

Pillow это форк PIL (Python Image Library), которая появилась благодаря поддержке Алекса Кларка и других участников. Основана на коде PIL, а затем преобразилась в улучшенную, современную версию. Предоставляет поддержку при открытии, управлении и сохранении многих форматов изображения. Многое работает так же, как и в оригинальной PIL.

Загрузка и установка Pillow

Перед началом использования Pillow, нужно загрузить и установить ее. Pillow доступна для Windows, Mac OS X и Linux. Самая “свежая” версия — это версия “8.1.0”, она поддерживается на python 3.6 и выше. Для установки Pillow на компьютеры Windows используйте conda или pip :

conda install -c anaconda pillow pip install Pillow

Для установки Pillow на компьютерах Linux просто используйте:

$ sudo pip install Pillow

А установки Pillow на MacOS X нужно для начала установить XCode, а затем Homebrew. После того как Homebrew установлен, используйте:

$ brew install libtiff libjpeg webp littlecms $ sudo pip install Pillow

Убедитесь, что Pillow установлена

Убедитесь, что Pillow установлена, откройте терминал и наберите следующее в текущей строке:

$ python Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:06:47) [MSC v.1914 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> from PIL import Image

Если система показывает снова >>> , значит модули Pillow правильно установлены.

Форматы файлов

Перед началом использования модуля Pillow, давайте укажем некоторые поддерживаемые типы файлов: BMP, EPS, GIF, IM, JPEG, MSP, PCX PNG, PPM, TIFF, WebP, ICO, PSD, PDF . Некоторые типы файлов возможны только для чтения, в то время как другие доступны только для написания. Чтобы увидеть полный список поддерживаемых типов файла и больше информации о них, ознакомьтесь с руководством к Pillow.

Как использовать Pillow для работы с изображениями

Поскольку мы собираемся работать с изображениями, для начала, скачаем одно. Если у вас уже есть изображение, которое хотите использовать, пропустите этот шаг, описанный ниже.

В нашем примере будем использовать стандартное тестовое изображение под названием «Lenna» или «Lena». Это изображение используется во многих экспериментах по обработке изображений. Просто зайдите сюда и загрузите изображение. Если вы нажмете на изображение, оно сохранится как изображение с количеством пикселей 512×512.

Использование Pillow

Давайте посмотрим на возможные варианты использования этой библиотеки. Основные функции находятся в модуле Image . Вы можете создавать экземпляры этого класса несколькими способами. Путем загрузки изображений из файлов, обработки других изображений, либо создания изображений с нуля. Импортируйте модули Pillow, которые вы хотите использовать.

Работа с изображениями

Одной из популярных библиотек для работы с изображениями является Pillow . Формально эта библиотека является форком другой библиотеки — PIL (Python Imaging Library). Однако если PIL работала со 2-й версий Python и давно уже не развивается, то Pillow имеет поддержку 3-й версии и продолжает развиваться.

Итак, установим данную библиотеку с помощью следующей команды:

pip install Pillow

(Стоит отметить, что в некоторые дистрибутивы Linux данная библиотека уже включена по умолчанию)

Подключение

Для работы с библиотекой необходимо импортировать модуль Image :

from PIL import Image

Открытие изображения

Для открытия изображения вызывается функция open() , в которую передается путь к файлу:

from PIL import Image # открытие изображения img = Image.open("forest.jpg")

В данном случае предполагается, что изображение представляет файл «forest.jpg» и располагается в одной папке с текущим скриптом Python. После выполнения функции переменная img будет содержать информацию об изображении в виде объекта класса Image (класс Image располагается в подключенном модуле Image).

На случай, если будет передан некорректный путь, и программа сгенерирует ошибку, можно поместить вызов метода в конструкцию try/catch :

from PIL import Image try: img = Image.open("C://somefolder//forest.jpg") except: print("Ошибка")

Получение информации о файле

Класс Image предоставляет ряд атрибутов, которые хранят информацию об изображении:

  • filename : имя файла или путь к файлу в виде строки
  • format : формат файла. Если изображение создано самой библиотекой, то имеет значение None .
  • mode : режим изображения, например, «1», «L», «RGB» или «CMYK». (Полный список форматов доступен в документации)
  • size : размер в виде кортежа (width, height)
  • width : ширина
  • height : высота
  • info : словарь dict, который хранит дополнительную ассоциированную с файлом информацию
  • is_animated : представляет булевое значение и равно True , если изображение содержит более одного фрейма. Применяется к анимированным изображениям
  • n_frames : количество фреймов в изображении. Применяется к анимированным изображениям

Например, получим некоторую информацию об изображении:

from PIL import Image img = Image.open("forest.jpg") print(f"Width: ") print(f"Height: ") print(f"Filename: ") print(f"Format: ") print(f"Mode: ")

Консольный вывод в моем случае:

Width: 484 Height: 363 Filename: forest.jpg Format: JPEG Mode: RGB

Вывод изображения на экран

С помощью метода show() можно октрыть изображение в программе для просмотра изображений по умолчанию для текщей операционной системы:

from PIL import Image img = Image.open("forest.jpg") img.show()

Сохранение изображения

Для сохранения изображения применяется метод save() . В качестве обязательного параметра он принимает путь, по которому сохраняется изображение:

from PIL import Image img = Image.open("forest.jpg") # сохраняем в файл forest_new.jpg img.save("forest_new.jpg")

Поворот изображения

Для вращения изображения применяется метод rotate() , в который в качестве обязательного параметра передается угол поворота. Результатом метода является повернутое изображение:

from PIL import Image img = Image.open("forest.jpg") # поворот на 90 градусов img2 = img.rotate(90) # сохраняем новое изображение img2.save("forest_new.jpg")

Поворот изображения в python

Обрезка изображения

Метод crop() позволяет вырезать часть изображения. В качестве параметра он принимает кортеж из 4 чисел, в формате:

(координата_X_верхнего_левого _угла, координата_Y_верхнего_левого _угла, координата_X_правого_нижнего _угла, координата_Y_правого_нижнего _угла)

Результатом метода является новое изображение:

from PIL import Image img = Image.open("forest.jpg") img = img.crop((0, 0, img.width/2, img.height/2)) img.save("forest_new.jpg")

В данном случае происходит обрезка, начиная с левого верхнего угла до его половины ширины и высоты.

Обрезка изображения в python

Изменение размера

Для изменения размера изображения применяется метод resize() , в который в качестве параметра передается кортеж из двух чисел — новой высоты и ширины. Результатом метода является сгенерированное изображение. Например, уменьшим в два раза:

from PIL import Image img = Image.open("forest.jpg") # уменьшаем в два раза img = img.resize((img.width//2, img.height//2)) img.save("forest_new.jpg")

Если необходимо пропорциональное уменьшение размеров, то можно использовать метод reduce() , который в качестве обязательного параметра принимает множитель уменьшения. Например, уменьшим изображение в 2 раза:

from PIL import Image img = Image.open("forest.jpg") # уменьшаем в два раза img = img.reduce(2) img.save("forest_new.jpg")

Наложение изображения

Функция paste() позволяет наложить одно изображение на другое:

Image.paste(im, box=None, mask=None)

Первый параметр — im представляет второе изображение, которое будет накладываться. Параметр box определяет область наложения, а третий параметр — mask

from PIL import Image img = Image.open("forest.jpg") img2 = Image.open("cats.jpg") img.paste(img2) img.save("cats_in_forest.jpg")

В данном случае изображение «cats.jpg» накладывается на «forest.jpg». Поскольку область наложения не указана, то верхний левый угол «cats.jpg» проецируется на верхний левый угол «forest.jpg».

Параметр box позволяет определить область наложения либо в виде кортежа с двумя элементами (координаты X и Y верхнего левого угла), либо в виде кортежа с четырьмя элементами(координаты X и Y верхнего левого угла и правого нижнего угла):

from PIL import Image img = Image.open("forest.jpg") img2 = Image.open("cats_small.jpg") img.paste(img2, (img.width//2, img.height//2)) img.save("cats_in_forest.jpg")

Наложение изображений в python

Зеркальное отражение

Для зеркального отражения применяется метод transpose() . В качестве параметра он принимает принцип отзеркаливания в виде одного из следующих значений:

  • Image.Transpose.FLIP_LEFT_RIGHT
  • Image.Transpose.FLIP_TOP_BOTTOM
  • Image.Transpose.ROTATE_90
  • Image.Transpose.ROTATE_180
  • Image.Transpose.ROTATE_270
  • Image.Transpose.TRANSPOSE
  • Image.Transpose.TRANSVERSE

Например, применим значение Image.Transpose.FLIP_LEFT_RIGHT , которое отражает слева направо:

from PIL import Image img = Image.open("cats.jpg") img = img.transpose(Image.Transpose.FLIP_LEFT_RIGHT) img.save("cats_new.jpg")

Зеркальное отражение изображений в python

Применение фильтров

С помощью метода filter() к изображению можно применить фильтры. В качестве параметра метод принимает определение фильтра. По умолчанию библиотека предоставляет следующие фильтры, которые определены в модуле ImageFilter:

  • BLUR
  • CONTOUR
  • DETAIL
  • EDGE_ENHANCE
  • EDGE_ENHANCE_MORE
  • EMBOSS
  • FIND_EDGES
  • SHARPEN
  • SMOOTH
  • SMOOTH_MORE

Например, применение фильтра размытия Blur

from PIL import Image, ImageFilter img = Image.open("forest.jpg") img = img.filter(ImageFilter.BLUR) img.save("forest_new.jpg")

Применение фильтров к изображениям в python на примере фильтра размытия

Для более детального ознакомления с остальным функционалом библиотеки можно обратиться к документации

Как установить в pycharm библиотеку PIL

введите сюда описание изображения

pip install —upgrade pip — пробовала

Отслеживать
3,135 6 6 золотых знаков 18 18 серебряных знаков 34 34 бронзовых знака
задан 9 июл 2019 в 15:48
236 2 2 золотых знака 4 4 серебряных знака 20 20 бронзовых знаков
в thonny все работает
9 июл 2019 в 15:49

4 ответа 4

Сортировка: Сброс на вариант по умолчанию

В PyCharm вы можете установить библиотеку, пользуясь встроенным средством:

File > Settings > Project: *project_name* > Project Interpreter 

Там можно настроить путь к вашему Python и установить библиотеку из списка

Отслеживать
ответ дан 9 июл 2019 в 17:33
fedotsoldier fedotsoldier
805 6 6 серебряных знаков 24 24 бронзовых знака

1) Активируйте виртуальное окружение (из папки vk ):

venv\Scripts\activate 

2) Установите Pillow :

pip install --upgrade Pillow 

Ошибка в том, что Вы не активировали виртуальное окружение, поэтому установили Pillow в папку C:\Users\User\AppData\Local\Programs\Python\Python37-32\Lib\site-packages .

Cкрипт ищет модуль в папке C:\Users\User\PycharmProjects\vk\venv\Lib\site-packages , следовательно его нужно туда установить, активировав окружение.

Pillow обработка изображений в Python на примерах

Библиотека изображений Python, или PIL (Python Imaging Library) нужна для обработки графики в Python. Фредрик Лунд является автором одного из лучших блогов, посвященных Python. Однако он перестал обновляться в далеком 2009 году, незадолго до последнего релиза PIL. К счастью, нашлись разработчики Python, что подхватили проект, создав форк PIL под названием Pillow. Pillow стал заменой оригинальной библиотеки PIL. Он также поддерживает Python 3, чего PIL так и не достиг.

Обратите внимание на то, что PIL и Pillow не могут быть установлены одновременно. В документации есть определенные предупреждения, где перечисляются различия между PIL и Pillow. Они обновляются время от времени, поэтому лучше ознакомиться с последними изменениями на официальной странице.

Изображения которые используются в уроке:

Установка Pillow в Python

Установить Pillow в Python можно через pip или easy_install . Установка через pip выполняется следующим образом:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *