Обработка изображений: работа с библиотекой Pillow

Материалы для изучения:

Англоязычная документация

Статья раз

Статья два

Презентация раз

Презентация два

Пример программы, которая делает из изображения чёрно-белое, усредняя значения компонент R, G, B.

from PIL import Image

img = Image.open("input.png") # Загружаем изображение из файла, формат файла определяется автоматически
pix = img.load()               # Получаем ссылку на массив пикселей
for x in range(0, img.width):       # Цикл по оси OX, слева направо
    for y in range(0, img.height):  # Цикл по оси OY, cверху вниз
        r, g, b = pix[x, y]         # pix[x, y] - это кортеж из трёх чисел
        gr = (r + g + b) // 3       # берём среднее из них
        pix[x, y] = (gr, gr, gr)    # записываем новый кортеж

# img.show()                        # Если оставить эту строчку, то картинка отобразится во внешней программе просмотра
img.save("output.png")   # Сохраняем изображение в новом файле

Для создания нового изображения нужно вызвать метод new:

img = Image.new("RGB", (640, 480), "white")

У этого метода следующие параметры.

  1. Цветовая модель изображения, будем использовать строку "RGB".
  2. Размер изображения — кортеж из двух элементом.
  3. Цвет, которым заполняется фон изображения. Текстовая строка с названием цвета или кортеж из значений каналов цвета, например, (255, 255, 255).

После этого с созданным изображением можно выполнять любые действия, затем записать его в файл.