Доброго времени суток, читатели, зрители моего канала programmer's notes. Не забывайте подписываться и писать свои комментарии к моим статьям и видео.
Справочные материалы по объекту Image библиотеки pillow (PIL)
Не большой справочник по метода объекта Image.
Объект - изображение может быть создан следующими способами:
- Image.new(mode, size, color=0) — создаётся объект - новое изображение. mode - режим, например 'RGB', size - кортеж, содержащий размеры изображения, color - цвет заливки изображения, по умолчанию чёрный цвет.
- Image.open(fp, mode='r', formats=None) — создаётся объект - изображение на основе файла-картинки. fp - путь к файлу или файловый объект. mode - режим открытия, 'r' - чтение, 'w' - запись. formats - кортеж или список загружаемых форматов. По умолчанию все форматы.
- Image.frombytes() — создаёт объект - изображение на основе пиксельных данных, расположенных в памяти.
Объект - изображение имеет следующие свойства:
- Image.filename — имя файла - изображения;
- Image.format — формат файла - изображения;
- Image.mode — режим изображения;
- Image.size — размер изображения в пикселях (кортеж);
- Image.width — ширина изображения;
- Image.height — высота изображения;
- Image.palette — цветовая палитра изображения;
- Image.info — другие данные, связанные с изображением;
- Image.is_animated — изображение имеет более одного кадра;
- Image.n_frames — количество кадров.
Пример
#!/usr/bin/python3
from PIL import Image
im = Image.open('1.png')
print(im.filename)
print(im.format)
print(im.mode)
print(im.size)
print(im.n_frames)
im.close()
Результат выполнения программы
1.png
PNG
RGB
(1920, 1080)
1
Методы объекта Image
Список методов представлен ниже. Далее идут несколько примеров с использованием этих методов.
- Image.alpha_composite(im, dest=(0, 0), source=(0, 0)) — накладывает изображение im на изображение Image.
- Image.apply_transparency() — применяет прозрачность к палитре изображения.
- Image.convert(mode=None, matrix=None, dither=None, palette=Palette.WEB, colors=256) — осуществляет преобразование изображения.
Пример
#!/usr/bin/python3
from PIL import Image
im = Image.open('1.png')
im1 = im.convert('L')
im1.save('1a.png')
im.close()
В результате создаётся чёрно-белая копия изображения ('1a.png').
- Image.copy() — создаёт копию изображения.
- Image.crop(box=None) — возвращает вырезанную часть изображения. box - кортеж координат левого верхнего угла и правого нижнего угла, вырезаемого изображения.
- Image.draft(mode, size) — пытается изменить открытое изображение под указанный режим.
- Image.effect_spread(distance) — случайно распределяет пиксели в изображении. distance — расстояние в котором распределяются пиксели. Позволяет создавать эффект размытости. Пример такой размытости при distance=40 см. на рисунке 1.
- Image.entropy(mask=None, extrema=None) — вычисление энтропии изображения.
- Image.filter(filter) — изменяет изображение согласно указанному фильтру.
#!/usr/bin/python3
from PIL import Image, ImageFilter
im = Image.open('1.png')
im1 = im.filter (ImageFilter.CONTOUR)
im1.save('1c.png')
Результат работы программы см. Рисунок 2
- Image.getbands() — возвращает кортеж, состоящий из названий каждого канала изображении.
- Image.getbbox() — возвращает ограничивающую рамку ненулевых областей изображения.
- Image.getchannel(channel) — возвращает изображение в режиме 'L', содержащем один канал изображения.
- Image.getcolors(maxcolors=256) — возвращает список цветов, используемых в этом изображении в виде несортированных значений. Максимальное количество выводимых цветов указывать обязательно.
- Image.getdata(band=None) — возвращает последовательность значений пикселей изображения.
- Image.getexif() — возвращает словарь тегов изображения.
- Image.getextrema() — получает минимальное и максимальное значения пикселей для каждого канала изображения. Например для RGB ((0, 255), (0, 255), (0, 255)).
- Image.getpalette(rawmode='RGB') — возвращает палитру изображения. None, если изображение без палитры.
- Image.getpixel(xy) — возвращает цвет указанного пикселя.
Например
print(im.getpixel((10, 10)))
получаем
(78, 29, 0)
- Image.getprojection() — возвращает две последовательности, указывающие, где находятся ненулевые пиксели по оси X и оси Y.
- Image.histogram(mask=None, extrema=None) — возвращает гистограмму изображения.
- Image.point(lut, mode=None) — создаёт новое изображение на основе поиска пикселей в исходном изображении и их замены.
- Image.putalpha(alpha) — добавляет или заменяет альфа-канал в этом изображении.
- Image.putdata(data, scale=1.0, offset=0.0) — копирует пиксельные данные из объекта сглаженной последовательности data в изображение.
- Image.putpalette(data, rawmode='RGB') — прикрепляет палитру data к этому изображению.
- Image.putpixel(xy, value) — изменяет цвет пикселя в данном месте.
- Image.quantize(colors=256, method=None, kmeans=0, palette=None, dither=Dither.FLOYDSTEINBERG) — метод преобразует изображение в режим 'P' с указанным количеством цветов.
- Image.reduce(factor, box=None) — уменьшение изображения (или вырезки изображения указанной в box) в factor-раз.
- Image.remap_palette(dest_map, source_palette=None) — создаёт изображение на основе данного с изменённой палитрой.
- Image.resize(size, resample=None, box=None, reducing_gap=None) — возвращает измененную копию этого изображения.
- Image.rotate(angle, resample=Resampling.NEAREST, expand=0, center=None, translate=None, fillcolor=None) — поворачивает изображение.
- Image.save(fp, format=None, **params) — сохраняет изображение.
- Image.seek(frame) — ищет кадр с указанным номером (для gif-формата).
- Image.show(title=None) — открывает изображение в программе для просмотра изображения по умолчанию.
- Image.split() — делит изображение на каналы. По одному изображению для каждого канала (кортеж изображений).
- Image.tell() — возвращает номер текущего кадра.
- Image.thumbnail(size, resample=Resampling.BICUBIC, reducing_gap=2.0) — возвращает изображение - миниатюру.
- Image.tobitmap(name='image') — преобразовывает изображение в строку, содержащие растровое изображения X11. name - префикс имени.
- Image.tobytes(encoder_name='raw', *args) — возвращает изображение как байтовый объект.
- Image.transform(size, method, data=None, resample=Resampling.NEAREST, fill=1, fillcolor=None) — преобразует изображение на основе метода method.
- Image.transpose(method) — транспонирует изображение. Возможные значения для параметра метода: Transpose.FLIP_LEFT_RIGHT,
Transpose.FLIP_TOP_BOTTOM, Transpose.ROTATE_90,
Transpose.ROTATE_180, Transpose.ROTATE_270, Transpose.TRANSPOSE, Transpose.TRANSVERSE.
Пример (см. рисунки 3 и 4)
#!/usr/bin/python3
from PIL import Image
im = Image.open('./1.png')
im1 = im.transpose(method=Image.Transpose.TRANSVERSE)
im1.save('1p.png')
im.close()
- Image.verify() — проверяет не повреждён ли файл изображения. Если обнаруживает повреждение, то вызывает исключение.
- Image.load() — загрузка картинки в память. Метод следует использовать при условии, что вам нужно работать с координатами изображения.
- Image.close() — закрыть файл- изображение.
Замечание.
Будем возвращаться к этому справочнику в следующих статьях, обращаясь к тому или иному методу.
Ну, пока всё!
Пишите свои предложения и замечания и занимайтесь программированием, а также проектированием баз данных, хотя бы для поддержания уровня интеллекта.