Top.Mail.Ru
Ответы
Аватар пользователя
8 месяцев назад
от

Помогите, пожалуйста, с заданием на Python

Напишите функцию для создания изображения из наиболее характерных частей лучшей копии Земли.

Функция best_earth() принимает аргументы: имя файла исходного изображения, три кортежа из двух чисел, именованный аргумент reverse со значением по умолчанию 0 (возможные значения – 90, 180, 270).

Функция поворачивает изображение на угол 180 градусов против часовой стрелки, затем меняет пиксели: если пиксель слишком красный – красная составляющая больше двух других, – у нее нужно забрать половину и поделить поровну между зеленой и синей, но не больше максимально возможной (используйте целочисленное деление); затем вырезаются три прямоугольника 600х200 пикселей, координаты левых верхних углов которых записаны в переданных кортежах, и помещаются один под другим на новое изображение, которое поворачивается на угол, записанный в reverse, против часовой стрелки.
Функция возвращает новое изображение.

Пример
best_earth(
'earth.png',
(0, 0), (400, 400), (100, 200),
reverse=180
).save('result.png')

Только авторизированные пользователи могут оставлять свои ответы
Дата
Популярность
Аватар пользователя
Просветленный
8мес
12345678910111213141516171819202122232425262728293031
 from PIL import Image 
 
def best_earth(filename, rect1, rect2, rect3, reverse=0): 
    img = Image.open(filename) 
    img = img.rotate(180) 
    width, height = img.size 
     
    for x in range(width): 
        for y in range(height): 
            r, g, b = img.getpixel((x, y)) 
            if r > g and r > b: 
                diff = r // 2 
                r -= diff 
                g += diff // 2 
                b += diff // 2 
                img.putpixel((x, y), (r, min(g, 255), min(b, 255))) 
                 
    new_img = Image.new('RGB', (600, 600)) 
     
    crop1 = img.crop((rect1[0], rect1[1], rect1[0] + 600, rect1[1] + 200)) 
    new_img.paste(crop1, (0, 0)) 
     
    crop2 = img.crop((rect2[0], rect2[1], rect2[0] + 600, rect2[1] + 200)) 
    new_img.paste(crop2, (0, 200)) 
     
    crop3 = img.crop((rect3[0], rect3[1], rect3[0] + 600, rect3[1] + 200)) 
    new_img.paste(crop3, (0, 400)) 
     
    new_img = new_img.rotate(reverse) 
     
    return new_img 
12345
 Traceback (most recent call last): 
  File "<string>", line 1 
    ```python 
    ^ 
SyntaxError: invalid syntax 
12345
 best_earth(  
'earth.png',  
(0, 0), (400, 400), (100, 200),  
reverse=180  
).save('result.png')