PIL — це бібліотека зображень Python, яка надає інтерпретатору Python можливості редагування зображень. Він був розроблений Фредріком Лундом та кількома іншими учасниками. Pillow — це зручна вилка PIL і проста у використанні бібліотека, розроблена Алексом Кларком та іншими учасниками. Ми будемо працювати з Pillow.
функція стрілки машинопису
Установка:
- Linux: У терміналі Linux введіть наступне:
pip install PillowВстановлення pip через термінал:sudo apt-get update
sudo apt-get install python-pip - Windows: Завантажити відповідний пакет Pillow відповідно до вашої версії python. Обов’язково завантажуйте відповідно до вашої версії python.
Тут ми працюватимемо з модулем Image, який надає однойменний клас і надає багато функцій для роботи з нашими зображеннями. Щоб імпортувати модуль Image, наш код має починатися з такого рядка:
ipconfig для ubuntu
from PIL import ImageОперації з зображеннями:
- Відкрийте певне зображення зі шляху: Python
#img = Image.open(path) # On successful execution of this statement # an object of Image type is returned and stored in img variable) try: img = Image.open(path) except IOError: pass # Use the above statement within try block as it can # raise an IOError if file cannot be found # or image cannot be opened.
- Отримати розмір зображення : екземпляри класу Image, які створюються, мають багато атрибутів, одним із корисних атрибутів якого є розмір. Python
Деякі інші атрибути: Image.width Image.height Image.format Image.info тощо.from PIL import Image filename = 'image.webp' with Image.open(filename) as image: width height = image.size #Image.size gives a 2-tuple and the width height can be obtained
- Зберегти зміни в зображенні: Щоб зберегти будь-які зміни, які ви внесли у файл зображення, нам потрібно вказати шлях і формат зображення. Python
img.save(path format) # format is optional if no format is specified #it is determined from the filename extension
- Обертання зображення: Для обертання зображення потрібен кут як параметр. Python
from PIL import Image def main(): try: #Relative Path img = Image.open('picture.webp') #Angle given img = img.rotate(180) #Saved in the same relative location img.save('rotated_picture.webp') except IOError: pass if __name__ == '__main__': main()
Примітка. Існує необов’язковий прапор розширення, доступний як один із аргументів методу повороту, який, якщо встановлено значення true, розширює вихідне зображення, щоб воно було достатньо великим, щоб умістити повне повернуте зображення. Як видно у наведеному вище фрагменті коду, я використав відносний шлях, де моє зображення розташоване в тому самому каталозі, що й мій файл коду python, також можна використовувати абсолютний шлях.
- Обрізання зображення: Image.crop(box) приймає 4-кортежну координату пікселя (лівий верхній правий нижній) і повертає прямокутну область із використаного зображення. Python
from PIL import Image def main(): try: #Relative Path img = Image.open('picture.webp') width height = img.size area = (0 0 width/2 height/2) img = img.crop(area) #Saved in the same relative location img.save('cropped_picture.webp') except IOError: pass if __name__ == '__main__': main()
- Зміна розміру зображення: Image.resize(size) – тут розмір надається як ширина та висота з двох кортежів. Python
from PIL import Image def main(): try: #Relative Path img = Image.open('picture.webp') width height = img.size img = img.resize((width/2 height/2)) #Saved in the same relative location img.save('resized_picture.webp') except IOError: pass if __name__ == '__main__': main()
- Вставлення зображення на інше зображення: Другим аргументом може бути 2-кортеж (вказує верхній лівий кут) або 4-кортеж (лівий верхній правий нижній) — у цьому випадку розмір вставленого зображення має відповідати розміру цієї області поля або Немає, що еквівалентно (0 0). Python
from PIL import Image def main(): try: #Relative Path #Image on which we want to paste img = Image.open('picture.webp') #Relative Path #Image which we want to paste img2 = Image.open('picture2.webp') img.paste(img2 (50 50)) #Saved in the same relative location img.save('pasted_picture.webp') except IOError: pass if __name__ == '__main__': main() ##An additional argument for an optional image mask image is also available.
- Отримання гістограми зображення: Це поверне гістограму зображення, оскільки список пікселів налічує по одному для кожного пікселя зображення. (Гістограма зображення — це графічне представлення тонального розподілу в цифровому зображенні. Вона містить усі значення яскравості, що містяться на зображенні. Вона відображає кількість пікселів для кожного значення яскравості. Це допомагає виконувати налаштування експозиції.) з PIL import Image Python
def main(): try: #Relative Path img = Image.open('picture.webp') #Getting histogram of image print img.histogram() except IOError: pass if __name__ == '__main__': main()
- Транспонування зображення: Ця функція дає нам дзеркальне відображення зображення Python
from PIL import Image def main(): try: #Relative Path img = Image.open('picture.webp') #transposing image transposed_img = img.transpose(Image.FLIP_LEFT_RIGHT) #Save transposed image transposed_img.save('transposed.webp') except IOError: pass if __name__ == '__main__': main()
- Розділити зображення на окремі смуги: Розділення зображення в режимі RGB створює три нові зображення, кожне з яких містить копію оригінальних окремих смуг. Python
from PIL import Image def main(): try: #Relative Path img = Image.open('picture.webp') #splitting the image print img.split() except IOError: pass if __name__ == '__main__': main()
- tobitmap: Перетворення зображення на растрове зображення X11 (формат бінарного зображення звичайного тексту). Він повертає рядок, що містить растрове зображення X11. Його можна використовувати лише для зображень у режимі 1, тобто чорно-білих зображень розміром 1 біт пікселя. з PIL імпортувати зображення Python
def main(): try: #Relative Path img = Image.open('picture.webp') print img.mode #converting image to bitmap print img.tobitmap() print type(img.tobitmap()) except IOError: pass if __name__ == '__main__': main()
- Створення мініатюри: Цей метод створює мініатюру відкритого зображення. Він не повертає новий об’єкт зображення, а вносить зміни на місці до самого відкритого об’єкта зображення. Якщо ви не бажаєте змінювати оригінальний об’єкт зображення, створіть копію, а потім застосуйте цей метод. Цей метод також оцінює доцільність збереження співвідношення сторін зображення відповідно до переданого розміру. з PIL імпортувати зображення Python
def main(): try: #Relative Path img = Image.open('picture.webp') #In-place modification img.thumbnail((200 200)) img.save('thumb.webp') except IOError: pass if __name__ == '__main__': main()