Есть задачка, как можно сократить данный код?

Рейтинг: 0Ответов: 1Опубликовано: 14.04.2023

Есть код

from PIL import Image

image = Image.open("monro.jpg")
red, green, blue, = image.split()
red = red.save("red.jpg")
green = green.save("green.jpg")
blue = blue.save("blue.jpg")
image = Image.open("red.jpg")
coordinates = (200, 0, image.width, image.height)
coordinates2 = (100, 0, 596, 522)
red1 = image.crop(coordinates) .save("red1.jpg")
red2 = image.crop(coordinates2) .save("red2.jpg")
red1 = Image.open("red1.jpg")
red2 = Image.open("red2.jpg")
red = Image.blend(red1, red2, 0.5) .save("red.jpg")

Как можно сократить код?

Ответы

▲ 0Принят
image = Image.open("monro.jpg")
image,, = image.split() #выкидываем блю и грин тк далее не используются

#радикально: нужна только эта строка
red = Image.blend(Image.crop((200, 0, image.width, image.height)), image.crop((100, 0, 596, 522)) , 0.5) .save("red.jpg")

#red = red.save("red.jpg") 
#green = green.save("green.jpg")
#blue = blue.save("blue.jpg")

#image = Image.open("red.jpg") #объект уже имеется
coordinates = (200, 0, image.width, image.height)
#coordinates2 = (100, 0, 596, 522)#переменная ради переменной
red1 = image.crop(coordinates) #.save("red1.jpg") #зачем сохранять промежуточный результат? #можно поступить как с координатес2
red2 = image.crop((100, 0, 596, 522)) #.save("red2.jpg")
#red1 = Image.open("red1.jpg") лишнее переоткрытие
#red2 = Image.open("red2.jpg")
red = Image.blend(red1, red2, 0.5) .save("red.jpg")