image.py modulo io e metodo _repr_png_

a
a.pietroluongo (11250 points)
15 38 131
asked Feb 22, 2019 in Programmare in python by a.pietroluongo (11,250 points)

Salve,volevo sapere come funziona il metodo _repr_png __ contenuto nel file image.py e  a cosa serve il modulo io

class Immagine:
   def __init__(self, img):
        self.pixels = img
    def _repr_png_(self):
        img = png.from_array(self.pixels, 'RGB')
        b = io.BytesIO()
        img.save(b)
        return b.getvalue()

171 views

1 Answer

andrea.sterbini (172780 points)
514 935 1789
answered Feb 22, 2019 by andrea.sterbini (172,780 points)
_repr_png_ serve a fornire una immagine a ipython in modo da visualizzarla direttamente nella console.
Per convertire dal nostro formato di matrice di triple rgb all'immagine png ho usato il metodo png.from_array che crea un oggetto di tipo png.
L'oggetto BytesIO serve a creare un buffer in memoria che può essere utilizzato come se fosse un file per salvarci dentro l'oggetto png ma senza creare files.
Alla fine leggo dalla memoria il blocco di byte dell'immagine
a
a.pietroluongo (11250 points)
15 38 131
commented Feb 22, 2019 by a.pietroluongo (11,250 points)
edited Feb 22, 2019 by a.pietroluongo
Grazie mi trovo, ma avrei potuto usare anche with open( , 'wb') as f:
...     f.write( )
?
andrea.sterbini (172780 points)
514 935 1789
commented Feb 23, 2019 by andrea.sterbini (172,780 points)
No, quello crea un file su disco