2013-12-12 17 views
5

Ho cercato su google, ho controllato la documentazione della libreria PIL e molto altro, ma non ho trovato la risposta alla mia semplice domanda: come posso riempire un'immagine esistente con il colore desiderato?libreria di immagini python: posso semplicemente riempire la mia immagine con un colore?

(sto usando from PIL import Image e from PIL import ImageDraw)

Questo comando crea una nuova immagine riempita con un colore desiderato

image = Image.new("RGB", (self.width, self.height), (200, 200, 200)) 

Ma vorrei riutilizzare la stessa immagine, senza la necessità di chiamare "nuova "ogni volta

Edit:

One possibilità è, dopo draw = ImageDraw.Draw(image), per usare

draw.rectangle([(0,0),image.size], fill = (200,200,200)) 

ma sono stupito non c'è nessun metodo più semplice per riempire una intera immagine con un colore di sfondo, come setTo per OpenCV.

risposta

5

Hai provato:

image.paste(color, box) 

dove box può essere un 2-tuple dando in alto a sinistra, un 4 parametri che definisce la sinistra, coordinate in alto, a destra, e di pixel inferiore, o Nessuno (stesso come (0, 0))

Dal momento che si desidera riempire l'intera immagine, è possibile utilizzare il seguente:

image.paste((200,200,200), [0,0,image.size[0],image.size[1]]) 
+0

@Antonio sì, non indovinare. Il metodo che hai detto qui sembra la migliore, oppure dovresti provare il metodo "paste" che ho messo sopra e poi ridisegnare quell'immagine. Sii curioso di sapere se ha funzionato bene (mai usato PIL): 'image.paste (color, box)' 'draw = ImageDraw.Draw (image)' – ryrich

+0

Ho incluso il mio precedente commento nella domanda. Per entrare più in dettaglio, la tua linea potrebbe essere 'image.paste ((200,200,200), [0,0, image.size [0], image.size [1]])'. Funziona bene, grazie! – Antonio

Problemi correlati