如何使用值列表在图片上绘制多个正方形?

2024-05-03 18:30:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我是一名Python初学者,试图解决一个有关图像操作的练习。该练习说:编写一个函数,将图片作为元组列表(每个元组有三个表示RGB颜色的值)并修改它,以给定顺序绘制列表中的所有正方形

列表中的每个元素都是一个tuble,由以下元素组成:

(x,y,side,(color))

x,y=要在图片中绘制的正方形的位置 l=要绘制的正方形的长度(以像素为单位) 颜色=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')

正如您在我的代码中所看到的,第一个函数disigna_quadrato拍摄一张图片、几个值并绘制一个正方形。我想通过调用disigna_quardi函数来绘制列表中的正方形

我不知道使用两个函数是否是个好主意

任何帮助都将不胜感激


Tags: 函数in元素列表for颜色绘制图片
1条回答
网友
1楼 · 发布于 2024-05-03 18:30:09

使用两个函数是个好主意!
继续你的想法,在第二个函数中调用第一个函数时,向它发送参数。
在这里,您可以这样做:

def disegna_quadrati(imm,lista): 
    for a in lista:
        disegna_quadrato(imm, a[0],a[1],a[2],a[3])

您不需要在a上循环,所有信息都会一起使用一次


也许我不太了解你的问题。如果有,请告诉我


如果您有任何问题,请随时提问

相关问题 更多 >