Перейти к содержимому

Как установить библиотеку pil в python

  • автор:

Библиотека Pillow в Python

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

Библиотека Pillow содержит основные функции обработки изображений:

  • содержит ряд готовых операций для изображениями L и RGB (автоконтраст, обрезка, масштабирование,вращение, произвольные аффинные преобразования и .т.д.)
  • содержит набор предопределенных фильтров улучшения изображения ( BLUR , DETAIL , SHARPEN и т.д.).
  • при сохранении файлов JPEG может использовать настройки качества изображения, эквивалентные настройкам Photoshop.
  • умеет делать копирование содержимого экрана (скриншот экрана).
  • поддерживает фильтрацию с помощью набора встроенных ядер свертки и преобразования цветового пространства.
  • метод гистограммы позволяет извлечь некоторую статистику из изображения, которую можно использовать для автоматического улучшения изображения и для статистического анализа.
  • умеет загружать шрифты TrueType или OpenType с последующим созданием объекта шрифта с заданным размером для выполнения надписей на изображении.
  • имеет простую 2D-графику для создания новых изображений, ретуширования существующих, а также для создания графики на лету для использования в Интернете.

Содержание:

  • Установка Pillow в виртуальное окружение;
  • Модель и режим изображений;
  • Система координат;
  • Прозрачность изображений;
  • Пример использования модуля Pillow .

Установка Pillow в виртуальное окружение:

# создаем виртуальное окружение, если нет $ python3 -m venv .venv --prompt VirtualEnv # активируем виртуальное окружение $ source .venv/bin/activate # обновляем `pip` (VirtualEnv):~$ python3 -m pip install -U pip # ставим модуль `Pillow` (VirtualEnv):~$ python3 -m pip install Pillow -U

Модель и режим изображений.

Изображение может состоять из одной или нескольких полос/каналов с данными. Pillow позволяет хранить несколько каналов в одном изображении при условии, что все они имеют одинаковые размеры и глубину. Например, изображение PNG может иметь полосы R , G , B и A для значений прозрачности красного, зеленого, синего и альфа-канала. Многие операции воздействуют на каждую полосу отдельно, например, гистограммы. Полезно думать, что каждый пиксель имеет одно значение для каждой полосы. Чтобы получить количество и названия каналов на изображении, используйте метод Image.getbands() .

Режим изображения mode — это строка, определяющая тип и глубину пикселя изображения. Каждый пиксель использует полный диапазон битовой глубины. Таким образом, 1-битный пиксель имеет диапазон от 0 до 1, 8-битный пиксель имеет диапазон от 0 до 255, 32-разрядный целочисленный пиксель имеет диапазон INT32 , а 32-битный пиксель с плавающей запятой имеет диапазон FLOAT32 .

Библиотека Pillow поддерживает следующие стандартные режимы:

  • 1 (черно-белые 1-битные пиксели, хранятся по одному пикселю на байт)
  • L (черно-белые 8-битные пиксели)
  • P (8-битные пиксели, сопоставленные с любым другим режимом с помощью цветовой палитры)
  • RGB (3×8-битные пиксели, истинный цвет)
  • RGBA (4×8-битные пиксели, истинный цвет с маской прозрачности)
  • CMYK (4×8-битные пиксели, цветоделение)
  • YCbCr (3×8-битные пиксели, формат цветного видео)
    • Обратите внимание, это относится к стандарту JPEG, а не к стандарту ITU-R BT.2020.
    • Диапазон оттенка 0-255 — это масштабированная версия 0 градусов

    Pillow пока не поддерживает многоканальные изображения с глубиной более 8 бит на канал.

    Прочитать режим изображения можно через атрибут Image.mode . Это строка, содержащая одно из указанных выше значений.

    Система координат.

    Библиотека Pillow использует декартову пиксельную систему координат с (0,0) в верхнем левом углу. Обратите внимание, что координаты относятся к подразумеваемым углам пикселей. Центр пикселя, адресованного как (0, 0) , на самом деле лежит в (0,5, 0,5) .

    Координаты обычно передаются в библиотеку в виде двух кортежей (x, y) . Прямоугольники представляются как 4-х элементный кортеж, причем левый верхний угол дается первым. Например, прямоугольник, покрывающий все изображение размером 800×600 пикселей, записывается как (0, 0, 800, 600).

    Размер изображения можно прочитать через атрибут Image.size . Это кортеж из двух элементов, содержащий размер по горизонтали Image.width и вертикали в пикселях Image.height .

    Прозрачность изображений.

    Если изображение не имеет альфа-канала, то прозрачность может быть указана в атрибуте Image.info с ключом transparency .

    В большинстве случаев значение transparency представляет собой одно целое число, описывающее, какое значение пикселя является прозрачным в изображении в режимах 1 , L , I или P . Однако изображения PNG могут иметь три значения, по одному для каждого канала в изображении в режиме RGB , или могут иметь строку байтов для изображения в режиме P (альфа-значение для каждой записи палитры).

    Ориентация изображений.

    Общим элементом атрибута Image.info изображений в формате JPG и TIFF является тег ориентации EXIF . Это инструкция о том, как следует ориентировать данные изображения при просмотре в программе-просмотрщике изображений. Например, тег может указывать, что изображение повернуто на 90 градусов или зеркально отражено. Чтобы применить эту информацию к сохраняемому изображению, можно использовать Image.exif_transpose() .

    Пример использования модуля Pillow .

    Прочитать изображение по URL можно следующим образом:

    from PIL import Image from urllib.request import urlopen url = "https://python-pillow.org/images/pillow-logo.png" # открываем URL img = Image.open(urlopen(url)) # сохраняем изображение img.save('pillow-logo.png') 

    Следующий код делает скриншот экрана и выполняет некоторые преобразования с полученным изображением. Все преобразования детально прокомментированы.

    from PIL import (Image, ImageEnhance, ImageOps, ImageGrab, ImageDraw, ImageFont) import time # делаем задержку в 2 секунды, что бы # успеть переключиться на нужное окно time.sleep(2) # делаем скриншот im_orig = ImageGrab.grab() # получаем размеры скриншота print(f'Размеры: im_orig.size>') # получаем режим изображения скриншота print(f'Режим: im_orig.mode>') # обрезаем по 100px с каждого края im_orig = ImageOps.crop(im_orig, border=100) # добавляем черную границу в 2px im_orig = ImageOps.expand(im_orig, border=2, fill='#000000') # и с верху добавляем белую границу в 10px im_orig = ImageOps.expand(im_orig, border=10, fill='#ffffff') # делаем надпись на скриншоте idraw = ImageDraw.Draw(im_orig) # текст text = 'DOCS-PYTHON.RU' # подключаем Font и задаем высоту в пикселях font = ImageFont.truetype("/usr/share/fonts/truetype/freefont/FreeSans.ttf", size=18) # вычисляем длину надписи textlength = idraw.textlength(text, font) # вычисляем положение надписи на скриншоте, например по ширине # ширина скриншота - длина надписи - граница 2px + 10px size = (im_orig.size[0]-textlength-12, im_orig.size[1]-32) # накладываем текст на скриншот idraw.text(size, text, font=font, fill='green') # сохраняем обработанный скриншот im_orig.save('scrshoot.png') # сохраняем скриншот в формате `JPG` # с оптимизацией и заданным качеством im_orig.save('scrshoot.jpg', optimize=True, quality=90) # Открываем изображение скриншота # (для примера) with Image.open('scrshoot.png') as im_orig: # получаем формат файла print(f'Формат файла: im_orig.format>') # ВНИМАНИЕ! все дальнейшие преобразования # проделываем с оригинальным изображением `im_orig` # результат каждого преобразования будем сохранять # обесцвечиваем изображение с оттенками серого im = ImageOps.grayscale(im_orig) # сохраняем im.save('scrshoot_grayscale.png') # накладываем сепию 'black='#523224'' im = ImageOps.colorize(im, black='#523224', white='#ffffff') im.save('scrshoot_colorize.png') # отображаем картинку зеркально im = ImageOps.mirror(im_orig) im.save('scrshoot_mirror.png') # `режим сканера` с порогом 150 # т.е. применяем к каждому пикселю картинки функцию `fn` threshold = 150 fn = lambda x : 255 if x > threshold else 0 # метод image.convert('L') - предварительно обесцвечивает картинку im = im_orig.convert('L').point(fn, mode='1') im.save('scrshoot_scan.png') # увеличим резкость im = ImageEnhance.Sharpness(im_orig).enhance(2) im.save('scrshoot_Sharpness.png') # увеличим контрастность im = ImageEnhance.Contrast(im_orig).enhance(2) im.save('scrshoot_Contrast.png') # увеличим насыщенность im = ImageEnhance.Color(im_orig).enhance(2) im.save('scrshoot_Color.png') # изменим размер изображения так, что бы оно вписалось в size size = (700, 700) # соотношения сторон сохраняются im = ImageOps.contain(im_orig, size, method=Image.BICUBIC) im.save('scrshoot_contain.png') # создание `thumbnail` size = (150, 150) im_orig.thumbnail(size) im_orig.save('scrshoot_thumbnail.jpg') 
    • КРАТКИЙ ОБЗОР МАТЕРИАЛА.
    • Функция Image.open() модуля Pillow
    • Функция Image.new() модуля Pillow
    • Функция Image.frombytes() модуля Pillow
    • Функция Image.frombuffer() модуля Pillow
    • Функция Image.fromarray() модуля Pillow
    • Создание скриншота с использованием Pillow
    • Объект Image модуля Pillow
    • Обработка GIF изображений в Pillow
    • Параметры для JPG, ICO и WebP модуля Pillow
    • Извлечение EXIF-тегов модулем Pillow
    • Встроенные фильтры улучшения модуля Pillow
    • Фильтры передискретизации модуля Pillow
    • Подмодуль ImageDraw модуля Pillow
    • Функция Image.alpha_composite() модуля Pillow
    • Функция Image.blend() модуля Pillow
    • Функция Image.composite() модуля Pillow
    • Функция Image.merge() модуля Pillow
    • Функция Image.eval() модуля Pillow
    • Регулировка яркости, контрастности, резкости и насыщенности: Pillow
    • Автоматическая регулировка контрастности, Pillow
    • Тонирование черно-белого фото модулем Pillow
    • Масштабирование изображений с модулем Pillow
    • Добавить/обрезать рамку изображения, модуль Pillow
    • Перевернуть/отразить изображение, модуль Pillow
    • Обесцвечивание/инверсия изображения, модуль Pillow
    • Операции с каналами изображений, модуль Pillow

    Установка Python Image Library (PIL) в x64 системы на примере CentOS

    Ну и напоследок пример установки для CentOS:
    Подразумевается, что нужная версия python и python-devel уже установлена в необходимом
    виртуальном окружении.

    yum install libjpeg libjpeg-devel zlib zlib-devel libtiff libtiff-devel freetype freetype-devel wget http://effbot.org/downloads/Imaging-1.1.7.tar.gz tar -zxvf Imaging-1.1.7.tar.gz cd Imaging-1.1.7 

    Теперь патчим setup.py и продолжим уже в необходимом виртуальном окружении:

    python setup.py build --force python setup.py install 

    Обработка и генерация изображений в Python. Библиотека Pillow

    Обработка и генерация изображений в Python. Библиотека Pillow

    Нередко нам нужно изменить размер картинки, кропнуть ее, наложить текст и так далее. Все это можно автоматизировать с помощью Python и библиотеки Pillow.

    Установка Pillow

    Установка производится через pip3. Вводим в консоль:

    pip3 install pillow

    Комьюнити теперь в Телеграм
    Подпишитесь и будьте в курсе последних IT-новостей

    Начало работы с библиотекой

    Для начала нам нужно инициализировать библиотеку в нашем скрипте:

    from PIL import Image

    В папку со скриптом поместим произвольное изображение. Файл назовем test.jpg.

    Теперь откроем изображение через метод в библиотеке:

    from PIL import Image img = Image.open('test.jpg') img.show()

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

    Pillow Python

    Для просмотра основной информации об изображении с помощью Pillow используем следующие методы:

    from PIL import Image img = Image.open('test.jpg') print(img.format) # Просмотр формата изображения. Выведет 'JPEG' print(img.mode) # Просмотр типа цветового пространства. Выведет 'RGB' print(img.size) # Просмотр размера изображения. Выведет (568, 305) print(img.filename) # Просмотр имени файла. Выведет 'test.jpg' r, g, b = img.split() histogram = img.histogram() print(histogram) # Просмотр значений RGB изображения. Выведет 1750, 255, 267, 237, 276, 299…

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

    В Pillow есть методы для кропа (обрезки) изображений. Обрежем наше изображение с помощью метода crop(), передав в параметры координаты обрезки:

    from PIL import Image img = Image.open('test.jpg') cropped = img.crop((0, 0, 100, 200)) cropped.save('cropped_test.jpg') img = Image.open('cropped_test.jpg') img.show()

    После выполнения данного кода, получим следующее изображение:

    Фото в Pillow Python

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

    С помощью метода Image.rotate() мы можем поворачивать изображение как нам угодно. В скобках указываем количество градусов, на которое нужно повернуть изображение. Рассмотрим на примере:

    from PIL import Image img = Image.open('test.jpg') rotated = img.rotate(180) rotated.save('rotated_test.jpg') img = Image.open('rotated_test.jpg') img.show()

    Поворот изображений в Pillow Python

    Конвертируем из JPG в PNG с помощью Pillow

    Для конвертации нам понадобится открыть изображение и просто сохранить его в другом формате. Рассмотрим на примере:

    from PIL import Image img = Image.open('test.jpg') img.save('test_png.png', 'png')

    Получаем такое же изображение, но в формате PNG.

    Изменение размера изображений

    Чтобы изменить размер изображения используем метод resize(). Рассмотрим это на примере:

    from PIL import Image img = Image.open('test.jpg') img = img.resize((170, 100), Image.ANTIALIAS) img.save('test_text.jpg') img = Image.open('test_text.jpg') img.show()

    Кроп в Pillow Python

    Пишем текст на изображениях

    Для наложения текста на изображение в Pillow существует метод text(), но для начала нужно добавить шрифт. Рассмотрим на примере:

    from PIL import Image, ImageDraw, ImageFont img = Image.open('test.jpg') font = ImageFont.truetype("arial.ttf", size=20) idraw = ImageDraw.Draw(img) idraw.text((25, 25), 'TEST test TeSt', font=font) img.save('test_text.jpg') img = Image.open('test_text.jpg') img.show()

    Получим изображение с текстом:

    Текст на изображении - Pillow Python

    Генерация пустого изображения

    Для создания пустого холста (изображения) используем метод Image.new(). Рассмотрим на примере:

    from PIL import Image, ImageDraw, ImageFont img = Image.new('RGB', (200, 200), 'black') img.save('test1.jpg') img = Image.open('test1.jpg') img.show()

    Получаем черный квадрат:

    Работа с Pillow Python

    Теперь давайте нарисуем на этом квадрате белый прямоугольник:

    from PIL import Image, ImageDraw, ImageFont img = Image.new('RGB', (200, 200), 'black') idraw = ImageDraw.Draw(img) idraw.rectangle((0, 0, 100, 100), fill='white') img.save('test1.jpg') img = Image.open('test1.jpg') img.show()

    Рисование в Pillow Python

    Вывод

    Мы разобрали основные методы библиотеки Pillow в Python: научились писать текст на изображениях, изменять размер, поворачивать их и даже обрезать.

    Надеюсь, статья была полезна для вас. Удачи!

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

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

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

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

    4 ответа 4

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

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

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

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

    Отслеживать
    ответ дан 9 июл 2019 в 17:33
    fedotsoldier fedotsoldier
    785 5 5 серебряных знаков 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 , следовательно его нужно туда установить, активировав окружение.

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

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