Как вставить картинку в программу python

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

Среди них работа с анимацией, рисование и ряд других.

Сегодня поговорим о том, как накладывать одну картинку на другую в этой библиотеке. Чтобы это сделать, не надо прикладывать никаких особых усилий. Весь процесс интуитивно понятный.

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

Если нам надо одно изображение вставить в другое, необходимо использовать метод paste() , который находится в библиотеке Pillow. Сегодня подробно поговорим о том, как выполняется вставка изображения, как задавать координаты для вставки. Также мы разберем, что такое маска, и как она используется, чтобы вставлять определенную форму.

Как выводить картинку в приложении [Tkinter] / Уроки Python

Напомним, что все базовые функции по работе с картинками располагаются в модуле Image. Для создания картинок используется одноименный объект.

Как установить библиотеку Pillow?

Для начала нам надо импортировать модуль Image, который находится в этой библиотеке. Именно он отвечает за работу со всеми изображениями в рамках этой библиотеки. Но это невозможно сделать, если она вообще отсутствует на компьютере. В этом случае ее надо установить. Чтобы сделать это, необходимо воспользоваться такой командой (убедитесь, что стоит менеджер пакетов PyPI).

После этого, введите следующую инструкцию Python.

pip install Pillow

Чтобы создать маску, нами будут использоваться модули ImageDraw и ImageFilter . Если вам достаточно лишь вставить картинку, то можно этот момент пропустить.

from PIL import Image im1 = Image.open(‘guido-van-rossum.jpg’) im2 = Image.open(‘fon.jpg’)

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

guido-van-rossum.jpg (человек, создавший язык программирования Python);

Использование pillow для обычной вставки изображения

Чтобы вставить изображение, необходимо воспользоваться методом paste() . Он очень простой в использовании, поскольку задействует только один аргумент. Вызов осуществляется от изображения фона, а в скобках нужно указать картинку, которая будет вставляться. В нашем случае файл с фоном будет называться fon.jpg , а изображение с создателем Python – guido-van-rossum.jpg .

Читайте также:
Descript программа как пользоваться

По умолчанию картинка вставляется в левой верхней части фонового изображения.

Уроки Python / Модуль tkinter (работа с картинками)


from PIL import Image im1 = Image.open(‘fon.jpg’) im2 = Image.open(‘guido-van-rossum.jpg’) im1.paste(im2) im1.save(‘fon_pillow_paste.jpg’, quality=95) im1.close() im2.close()

Pillow Paste() - вставка одного изображения в другое изображение в Python

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

У метода paste есть недостаток. Он переписывает объект фонового изображения. Следовательно, если вам необходимо сохранить оригинальную картинку, которая хранилась в переменной im1 , то необходимо скопировать объект уже открытого изображения с помощью метода copy() .

from PIL import Image im1 = Image.open(‘fon.jpg’) im2 = Image.open(‘guido-van-rossum.jpg’) back_im = im1.copy() back_im.paste(im2) back_im.save(‘fon_pillow_paste.jpg’, quality=95) im1.close() im2.close()

Координаты для вставки картинки

Позиция, на которую осуществляется вставка картинки, указывается с помощью кортежа (координата x верхнего левого угла, координата y верхнего левого угла) во втором параметре box .

Напомним, что кортеж – это итерируемый объект с неизменяемыми значениями. Все объекты, которые в него включены, записываются в скобках.

from PIL import Image im1 = Image.open(‘fon.jpg’) im2 = Image.open(‘guido-van-rossum.jpg’) im1.paste(im2, (100, 50)) im1.save(‘fon_pillow_paste_pos.jpg’, quality=95) im1.close() im2.close()

Pillow Paste() - вставка одного изображения в другое изображение в Python

Ниже мы привели фрагмент изображения, которое должно получиться в результате исполнения этого кода. Попробуйте запустить его у себя, используя картинки, которые были скачаны ранее. В нашем случае картинка была вставлена таким образом, чтобы смещение слева было 100 пикселей, а сверху – 50 пикселей.

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

from PIL import Image im1 = Image.open(‘fon.jpg’) im2 = Image.open(‘guido-van-rossum.jpg’) im1.paste(im2, (450, 100)) im1.save(‘fon_pillow_paste_out.jpg’, quality=95) im1.close() im2.close()

Pillow Paste() - вставка одного изображения в другое изображение в Python

Как применять маску в Pillow?

Третий параметр – это mask ( маска). Это означает, что картинку, которая встраивается в окно программы, можно обрезать и вставить не только в форме прямоугольника, но и любой другой в зависимости от того, какая форма маски, которая применяется. Маски могут быть самой разной формы, и в качестве них можно использовать геометрические фигуры или реальные изображения.

Картинка, которая будет использоваться в качестве маски, должна иметь такую же ширину и высоту, как и встраиваемая. Также в ней должны быть такие три типа режима mode .

  1. 1: 1-битное изображение (то есть, бинарное).
  2. L: 8-битная картинка, которая является черно-белой.
  3. RGBA – цветное изображение RGB, в котором есть также альфа-канал (он отвечает за то, чтобы в программе была возможность задавать прозрачный цвет).

Когда маска 8-битная (то есть, черно-белая), то в этом случае при значении маски 0, а встраиваемой картинки – 255 видно фон. Если же используются другие значения, то обе картинки сливаются в полном соответствии с ними.

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

from PIL import Image, ImageDraw mask_im = Image.new(«L», im2.size, 0) draw = ImageDraw.Draw(mask_im) draw.ellipse((100, 10, 270, 180), fill=255) mask_im.save(‘data/dst/mask_circle.jpg’, quality=95)

Pillow Paste() - вставка одного изображения в другое изображение в Python

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

Читайте также:
Что делать если антивирус блокирует программу

Осуществление процесса вставки происходит путем использования этого изображения в качестве маски.

Что будет с этой маской?

  1. Все темные пиксели будут использоваться в качестве меток для удаления данного пикселя из картинки с Гвидо Ван Россумом.
  2. Светлая часть маски оставляет пиксели такими, какими они есть.
  3. Если пиксели серые (то есть, по цвету занимают промежуточное положение между белыми и черными, то эта часть будет прозрачной лишь на несколько процентов).

from PIL import Image, ImageDraw im1 = Image.open(‘fon.jpg’) im2 = Image.open(‘guido-van-rossum.jpg’) mask_im = Image.new(«L», im2.size, 0) draw = ImageDraw.Draw(mask_im) draw.ellipse((100, 10, 270, 180), fill=255) im1.paste(im2, (0, 0), mask_im) im1.save(‘fon_pillow_paste_mask_circle.jpg’, quality=95) im1.close() im2.close() mask_im.close()

Pillow Paste() - вставка одного изображения в другое изображение в Python

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

Когда мы используем модуль ImageFilter , чтобы размывать маску, то мы также можем смешивать и вставлять границы.

from PIL import Image, ImageDraw, ImageFilter im1 = Image.open(‘fon.jpg’) im2 = Image.open(‘guido-van-rossum.jpg’) mask_im = Image.new(«L», im2.size, 0) draw = ImageDraw.Draw(mask_im) draw.ellipse((100, 10, 270, 180), fill=255) mask_im_blur = mask_im.filter(ImageFilter.GaussianBlur(10)) im1.paste(im2, (0, 0), mask_im_blur) im1.save(‘fon_pillow_paste_mask_circle_blur.jpg’, quality=95) im1.close() im2.close() mask_im.close()

Маска наша теперь такая.

Pillow Paste() - вставка одного изображения в другое изображение в Python

А после того, как мы использовали эту маску, у нас получился следующий результат. Красиво, не так ли?

Pillow Paste() - вставка одного изображения в другое изображение в Python

В целом, маска может быть любая, не обязательно ограничиваться исключительно геометрическими фигурами. Например, можно использовать в качестве маски такое изображение с черно-белой бабочкой.

После того, как была открыта картинка с помощью метода open() , она приспособится к размеру изображения, которое вставляется. Правда, для этого необходимо использовать метод resize() , а чтобы осуществить конвертацию режима в черно-белый, мы применили метод convert() . Вот пример кода, который наглядно это демонстрирует.

from PIL import Image im1 = Image.open(‘fon.jpg’) im2 = Image.open(‘guido-van-rossum.jpg’) mask_im = Image.open(‘butterfly.jpg’).resize(im2.size).convert(‘L’) im1.paste(im2, (100, 100), mask_im) im1.save(‘fon_pillow_paste_mask_butterfly.jpg’, quality=95) im1.close() im2.close() mask_im.close()

Pillow Paste() - вставка одного изображения в другое изображение в Python

Если попробовать запустить этот фрагмент кода, то результат мы получим следующий.

Конечно, этот пример далек от идеала. Ведь форма эта довольно непростая, и на практике она не будет использоваться почти никогда. А вот если маска имеет форму звездочки, то найти ей применение вполне возможно.

Источник: office-guru.ru

Как импортировать (загрузить) изображение в python?

Язык программирования Python

Примеры того, как импортировать (загрузить) изображение в python:

Импорт изображения с помощью matplotlib

Чтобы импортировать изображение в python, одним из решений является использование matplotlib:

from matplotlib import image from matplotlib import pyplot as plt img = image.imread(«fav.jpg»)Code language: JavaScript (javascript)
print(type(img)) print(img.shape)Code language: PHP (php)
class ‘numpy.ndarray’>Code language: HTML, XML (xml)
(300, 450, 3)

3 соответствует режиму RGB.

После этого можно вывести изображение с помощью imshow из matplotlib в виде графика.

plt.imshow(img) plt.show()Code language: CSS (css)

Импорт изображения с помощью Pillow

Другое решение – использовать Pillow

from PIL import Image from matplotlib import pyplot as plt img= Image.open(«fav.jpg»)Code language: JavaScript (javascript)
type(img)

не является массивом numpy:

PIL.JpegImagePlugin.JpegImageFileCode language: CSS (css)

Тем не менее, все еще можно вывести изображение на экран с помощью imshow

plt.imshow(img) plt.show()Code language: CSS (css)

Читайте также:
Программа для создание 3d модели людей

Для преобразования img в матрицу numpy

import numpy as np img = np.asarray(img)Code language: JavaScript (javascript)

Источник: dvsemenov.ru

Основные возможности библиотеки 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, которые вы хотите использовать.

Источник: pythonru.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru