#python
#python
Вопрос:
Я новичок в Python, пытаюсь решить упражнение, касающееся манипулирования изображениями. В упражнении говорится: Напишите функцию, которая преобразует картинку в список списков кортежей (каждый кортеж имеет три значения, представляющие цвет RGB) и изменяет его, рисуя все квадраты, присутствующие в списке, в заданном порядке.
Каждый элемент списка представляет собой таблицу, состоящую из следующих элементов:
(x,y,side,(color))
x, y = положение квадрата, который будет нарисован на картинке
l = длина в пикселях квадрата, который нужно нарисовать
color = цвет RGB, описываемый как набор из трех значений, указывающих цвет квадрата, который нужно нарисовать
Я знаю, как нарисовать один квадрат на картинке. Проблема в том, что я не знаю, как я мог бы нарисовать несколько квадратов, используя одну функцию, не вызывая ее более одного раза.
import immagini
def disegna_quadrato (imm,x,y,l,colore):
h,w = len(imm),len(imm[0])
for i in range(y,y l):
for j in range(x,x l):
if i<h and j< w:
imm[i][j]=colore
def disegna_quadrati(imm,lista):
for a in lista:
for b in a:
imm[a][b] = disegna_quadrato()
if __name__== '__main__':
imm = immagini.load('fiore.png')
im1 = disegna_quadrati (imm,[(20,20,40,(255,255,255)), (30,30,30,(180,180,180)), (40,40,20,(100,100,100))])
immagini.save(imm,'fiore-squares.png')
Как вы можете видеть в моем коде, первая функция disegna_quadrato берет картинку, несколько значений и рисует один квадрат. Я хочу нарисовать квадраты, которые присутствуют в списке, просто вызвав функцию disegna_quadrati один раз.
Я не знаю, является ли использование двух функций хорошей идеей.
Буду признателен за любую помощь!
Ответ №1:
Использование двух функций — хорошая идея!
Продолжайте развивать свою идею отправлять параметры в первую функцию, когда вы вызываете ее во второй.
Вот кто из вас может это сделать:
def disegna_quadrati(imm,lista):
for a in lista:
disegna_quadrato(imm, a[0],a[1],a[2],a[3])
Вам не нужно повторять цикл a
, вся информация используется один раз, вся вместе.
Возможно, я не совсем понял вашу проблему. Скажите мне, если да.
Если у вас есть какие-либо вопросы, не стесняйтесь задавать.