factograf
RU
Войти

Python Imaging Library

Все данные карточки 9
Тип
Библиотека для обработки изображений
Автор
Fredrik Lundh
Разработчик
Secret Labs AB
Написана на
Python, Си
Дата выпуска
1995
Последняя версия
1.1.7 (15 ноября 2009)
Тестовая версия
1.2a0 (2011)
Лицензия
Historical Permission Notice and Disclaimer
Сайт
python-pillow.github.io

Python Imaging Library (сокращенно PIL) — библиотека языка Python (версии 2), предназначенная для работы с растровой графикой.

Разработка библиотеки прекращена (последняя правка датируется 2011 годом). Однако проект под названием Pillow, являющийся форком PIL, развивается и включает, в том числе, поддержку Python 3.x. Этот форк был принят в качестве замены оригинальной библиотеки и включён в некоторые дистрибутивы Linux, включая Debian и Ubuntu (с 13.04).

Возможности библиотеки

  • поддержка бинарных, полутоновых, индексированных, полноцветных и CMYK изображений;
  • поддержка форматов BMP, EPS, GIF, JPEG, PDF, PNG, PNM, TIFF и некоторых других на чтение и запись;
  • поддержка множества форматов (ICO, MPEG, PCX, PSD, WMF и др.) только для чтения;
  • преобразование изображений из одного формата в другой;
  • правка изображений (использование различных фильтров, масштабирование, рисование, матричные операции и т. д.);
  • использование библиотеки из Tkinter и PyQt.

Требует наличия библиотек zlib (для PNG), libjpeg, freetype2 (для OpenType/TrueType).

Примеры

Надпись на синем фоне, результат
Надпись на синем фоне, результат

Надпись на цветном фоне можно создать с помощью метода text объекта-изображения. В следующем примере надпись наносится на вновь созданное изображение размером 100 на 50 пикселей:

from PIL import Image, ImageDraw
text = "Hello, PIL!!!"
color = (0, 0, 120)
img = Image.new('RGB', (100, 50), color)
imgDrawer = ImageDraw.Draw(img)
imgDrawer.text((10, 20), text)
img.save("pil-basic-example.png")

Следующий пример конвертирует файлы формата JPEG в формат PNG:

import os
from PIL import Image


def convert_jpegs_to_pngs(folder_path):
    # Проверяет, является ли указанный путь папкой
    if not os.path.isdir(folder_path):
        print(f"Error: {folder_path} is not a valid folder.")
        return

    # Перебирает все файлы в папке
    for filename in os.listdir(folder_path):
        # Проверяет, имеет ли файл расширение.jpg или.jpeg
        if filename.lower().endswith(".jpg") or filename.lower().endswith(".jpeg"):
            # Полный путь к файлу
            jpeg_path = os.path.join(folder_path, filename)
            # Путь к преобразованному файлу
            png_path = os.path.join(folder_path, os.path.splitext(filename)[0] + ".png")

            try:
                # Открывает изображение JPEG
                with Image.open(jpeg_path) as img:
                    # Преобразует и сохраняет как PNG
                    img.save(png_path, "PNG")
                    print(f"Converted {jpeg_path} to {png_path}")
            except Exception as e:
                print(f"Error converting {jpeg_path}: {e}")

На 11 языках

Текст из Википедии, CC BY-SA 4.0 · Статья-источник