Получение и изменение цвета пикселя в изображении. Библиотека PIL Python
Работа с изображениями » Python для начинающих изменить пиксель python, сменить формат изображения python, сохранения изображения python
В прошлой статье мы узнали как установить библиотеку PIL в Python и начать уже с ней работать. В этой статье мы продолжаем изучение библиотеки PIL. Начиная с версией 1.1.6 метод load() возвращает объект, с помощью которого можно получить доступ к отдельным пикселям изображения. Указав два значения внутри квадратных скобок, можно получить или задать цвет пикселя.
>>> img = Image.open("foto.jpg")
>>> obj = img.load()
>>> obj[25, 45] # Получаем цвет пикселя
(122, 86, 62)
>>> obj[25, 45] = (255, 0, 0) # Задаем цвет пикселя (красный)
Для доступа к отдельному пикселю вместо метода load() можно использовать методы getpixel() и putpixel(). Метод getpixel(<Координаты>) позволяет получить цвет указанного пикселя, а метод putpixel(<Координаты>, <Цвет>) изменяет цвет пикселя. Координаты пикселя указываются в виде кортежа из двух элементов. Необходимо заметить, что эти методы работают медленнее метода load(). Пример использования метода getpixel() и putpixel() приведен ниже.
Использование метода getpixel() и putpixel()
>>> img = Image.open("foto.jpg")
>>> img.getpixel((25, 45)) # Получаем цвет пикселя
(122, 86, 62)
>>> img.putpixel((25, 45), (255, 0, 0)) # Изменяем цвет пикселя
>>> img.getpixel((25, 45)) # Получаем цвет пикселя
(255, 0, 0)
>>> img.show() # Просматриваем изображение
В этом примере для просмотра изображения мы воспользовались методом show(). Метод show() создает временный файл в формате BMP и запускает программу для просмотра изображения, используемую в операционной системе по умолчанию. Например, на моем компьютере запускается программа ACDSee. Для сохранения изображения в файл предназначен метод save().
В первом параметре указывается абсолютный или относительный путь. Вместо пути можно передать файловый объект, открытый в бинарном режиме. Сохраним изображение в форматах JPEG и BMP разными способами.
Сохраняем изображение в Python
>>> img.save("tmp.jpg") # В формате JPEG
>>> img.save("tmp.bmp", "BMP") # В формате BMP
>>> f = open("tmp2.bmp", "wb")
>>> img.save(f, "BMP") # Передаем файловый объект
>>> f.close()
Обратите внимание на то, что мы открыли файл в формате JPEG, а сохранили его в формате BMP. Таким образом, можно открывать изображения в одном формате и конвертировать его в другой формат. Если сохранить изображение не удалось, возбуждается исключение IOError. Если параметр <Формат> не указан, то формат изображения определяется по расширению файла.
В параметре <Обции> можно указать дополнительный характеристики изображения. Поддерживаемый опции зависят от формата изображения. Например, по умолчанию изображения в формате JPEG сохраняются с качеством 75. С помощью опции quality можно указать другое значение в диапазоне от 1 до 100.
>>> img.save("tmp3.jpg", "JPEG", quality=100) # Указание качества
За дополнительной информации по опциям обращайтесь к документации. Так же для более подробной инструкции игры в покер можете прочитать poker правила и повысить свои навыки в этой игре. Удивите своих знакомых во время игры в покер, продемонстрировав им свой профессионализм игры.
- Абстрактные методы в Python
- Как определить кодировку последовательности байтов в Python
- Создание нового изображения с библиотекой PIL в Python
- Как выбрать хостинг для сайта без какого-либо риска?
- Перебор элементов словаря dict() в Python
- Выполнение запроса в SQLite3 через Python
- Инструкция with - as в Python