Доброго времени суток, читатели, зрители моего канала programmer's notes. Не забывайте подписываться и писать свои комментарии к моим статьям и видео.
Начала библиотеки Pillow
Пришло время перейти к графике. Начинаем изучать мощную библиотеку для работы с изображениями pillow. Самое главное в том, что библиотека избавляет нас самим декодировать и кодировать изображения разных форматов, предоставляя доступ как к отдельным пикселям, так и к возможностям выполнения набора операций над всем изображением или отдельной его частью. Сегодня посмотрим общую идею работы с изображениями.
Значительная часть обработки идёт через объект получаемый при открытии файла изображения с диска или из Internet. Для этого используется класс Image, импортируемый из PIL. Далее можно использовать различные методы и свойства полученного объекта.
Замечание 1
Библиотека называется Pillow, но в команде импорта используется имя PIL. Этому есть чисто историческая причина.
Замечание 2
Буду всюду при работе с графикой использовать свои фотографии, чтобы не думать о законности использования картинок.
#!/usr/bin/python3
from PIL import Image
img = Image.open('./im2.png', mode='r')
# вывод информации об изображении
print(img.mode)
print(*img.size)
newf1 = './mim1.jpg'
newf2 = './mim2.jpg'
img.save(newf1, 'jpeg')
img.thumbnail((256, 256))
img.save(newf2, 'jpeg')
img.close()
В результате работы программы на консоли появится информация об изображении - тип и его размер и будет создана копия начального изображения 'mim1.jpg' (Рисунок 1) и миниатюра 'mim2.jpg' (рисунок 1а) указанного в программе размера.
Замечание 3
Хотя в программе указан размер миниатюры 256 на 256, на самом деле метод берёт указанную ширину, а высоту выбирает согласно пропорции размеров в исходном изображении.
Несколько пояснений к программе выше
- img = Image.open('./im2.png', mode='r') — создаём объект, который потом используется для различных манипуляций с картинкой.
- img.save(newf1, 'jpeg') — сохраняем изображение под новым именем.
- img.thumbnail((256, 256)) — создаём изображение - миниатюру указанным размеров (см. замечание выше). Миниатюра заменяет исходное изображение.
- img.close() — закрыть файл и изображение.
Перейдём ко второму примеру.
#!/usr/bin/python3
from PIL import Image
img = Image.open('./im3.png', mode='r')
img1 = img.copy()
img.thumbnail((256, 256))
# получить размеры исходного рисунка и миниатюры
ix1, iy1 = img.size
ix, iy = img1.size
img1.paste(img, (ix - ix1, iy - iy1))
img1.save('imgg.png', 'png')
img2 = img1.rotate(-90, expand=True)
img2.save('imggr.png', 'png')
img.close()
img1.close()
img2.close()
В результате работы программы будет создана копия изображения из рисунка 2 'im3.png' ('imgg.png' - рисунок 3) с миниатюрой самого изображения в правом нижнем угле и это же это же изображение, но повёрнутое на 90 градусов по часовой стрелке ('imggr.png' - рисунок 4).
Сделаем несколько пояснений к программе выше
- img1 = img.copy() — создаём копию исходного изображения.
- img2 = img1.rotate(-90, expand=True) — повернуть изображение на 90 градусов по часовой стрелке.
- img1.paste(img, (ix - ix1, iy - iy1)) — вставить миниатюру в рисунок (рисунок 3).
Ну, пока всё!
Пишите свои предложения и замечания и занимайтесь программированием, а также проектированием баз данных, хотя бы для поддержания уровня интеллекта.