Задачи
Задача 1
Считается, что противоположные цвета С1 и С2, заданные как RGB и (255-R)(255-G)(255-B), хорошо гармонируют друг с другом. R, G и B — это интенсивность, соответственно, красной, синей и зеленой составляющих цвета.
Напишите программу, которая получает на вход цвет в виде трех вводимых через пробел его составляющих в нотации RGB, и выдаёт в ответ цвет, противоположный введенному.
Пример
Ввод
Вывод
Задача 2
В работе программ и веб-сервисов иногда случается, что нужная картинка не загружается. В этом случае они показывают вместо неё блок, залитый «усреднённым» цветом нужной картинки.
Например, из изображения:
Получается вот такое:
Мы решим упрощенную задачу: используя библиотеку PIL, реализуйте алгоритм, который вычисляет среднее значение каждой составляющей R, G, B и выводит эти значения на экран через пробел.
Формат ввода
Формат вывода
Задача 3
Время рисовать! Давайте с помощью функций библиотеки PIL
нарисуем лодку с парусом. Напишите функцию picture(file_name
, width
, height
, sky_color
, ocean_color
, boat_color
, sail_color
, sun_color
):
Параметр
file_name
задаёт имя файла будущей картинки (Все имена файлов имеют расширение .bmp).Параметры
width
,height
задают ширину и высоту в пикселях и всегда кратны 100.Параметр
sky_color
задаёт цвет неба в форме кортежа из трёх целых чисел. Задайте значение по умолчанию#87CEEB
.Параметр
ocean_color
задаёт цвет океана в форме кортежа из трёх целых чисел. Задайте значение по умолчанию#017B92
.Параметр
boat_color
задаёт цвет лодки в форме кортежа из трёх целых чисел. Задайте значение по умолчанию#874535
.Параметр
sail_color
задаёт цвет паруса в форме кортежа из трёх целых чисел. Задайте значение по умолчанию#FFFFFF
.Параметр sun_color задаёт цвет солнца в форме кортежа из трёх целых чисел. Задайте значение по умолчанию
#FFCF40
.
Параметры функции должны быть названы именно так, как указано в сигнатуре функции в условии
При вызове функции picture(’test.bmp’, 1000, 800)
должно быть получено такое изображение:
На следующем изображении показаны пропорции элементов по отношению к размеру изображения (горизонтальные размеры написаны горизонтально, а вертикальные — вертикально):
Задача 4
Напишите функцию gradient(color)
, создающую графический файл с плавным переходом цвета. Файл должен содержать прямоугольник длиной 512 пикселей (по 2 пикселя на каждый оттенок) и высотой 200 пикселей.
В функцию передается обозначение цвета, градиент которого надо построить. Варианты цветов: R, G и B. Обозначение может быть введено в любом регистре.
Формат ввода
Формат вывода
Файл res.png
:
Примечания
Для того чтобы создать новое изображение необходимо воспользоваться функцией Image.new()
:
Для рисования на изображении используется объект Draw
из библиотеки ImageDraw
. У этого объекта есть много инструментов для создания графических примитивов: прямых, кривых, точек, прямоугольников, дуг и т.д.
Следующий пример создает новое черное изображение размером 100 на 200 и нарисует на нем линию красного цвета, толщиной в 1 пиксель из левого верхнего в правый нижний угол.
Подробно про библиотеку ImageDraw
можно почитать тут.
Задача 5
Напишите функцию board(num, size)
, создающую графический файл в формате PNG с изображением квадратного чёрно-белого клетчатого поля.
В функцию поступают два целых числа — количество клеток n и размер клетки в пикселях s. (в примере создаётся доска 8x8 клеток, размер каждой клетки — 50x50 пикселей).
Левая верхняя клетка должна быть чёрной.
Формат ввода
Формат вывода
Графический файл res.png:
Примечания
Чтобы создать новое изображение, необходимо воспользоваться функцией Image.new()
:
Для рисования прямоугольников воспользуйтесь функцией rectangle()
из ImageDraw
. Напомним, что подробная информация тут.
Задача 6
И снова время рисовать! Новый год прошел достаточно давно, поэтому хочется опять вернуть новогоднее настроение. Давайте с использованием библиотеки PIL нарисуем ёлочку.
Напишите функцию picture(file_name, width, height, sky_color, snow_color, trunk_color, needls_color, sun_color)
:
Параметр
file_name
задаёт имя файла будущей картинки (Все имена файлов имеют расширение .bmp).Параметры
width
,height
задают ширину и высоту в пикселях и всегда кратны 100.Параметр
sky_color
задаёт цвет неба в форме кортежа из трёх целых чисел. Задайте значение по умолчанию#75BBFD
Параметр
snow_color
задаёт цвет снега в форме кортежа из трёх целых чисел. Задайте значение по умолчанию#FFFAFA
Параметр
trunk_color
задаёт цвет ствола в форме кортежа из трёх целых чисел. Задайте значение по умолчанию#A45A52
Параметр
needls_color
задаёт цвет хвои в форме кортежа из трёх целых чисел. Задайте значение по умолчанию#01796F
Параметр
sun_color
задаёт цвет солнца в форме кортежа из трёх целых чисел. Задайте значение по умолчанию#FFDB00
Параметры функции должны быть названы именно так, как указано в сигнатуре функции в условии
При вызове функции picture(’test.bmp’, 1000, 800)
должно быть получено такое изображение:
На следующем изображении показаны пропорции элементов по отношению к размеру изображения (горизонтальные размеры написаны горизонтально, а вертикальные — вертикально):