Il 23/07/2013 21:41, Valerio Maggio ha scritto:

On Jul 23, 2013, at 9:35 PM, Marco Beri <marcob...@gmail.com <mailto:marcob...@gmail.com>> wrote:

Il giorno 23/lug/2013 20:08, "Valerio Maggio" <valerio.mag...@gmail.com <mailto:valerio.mag...@gmail.com>> ha scritto:

> [Stackoverflow]Using numpy and pil to convert 565(16bit-color) to 888(24bit-color) (credo sia l'esatto opposto di quello che serve a te, btw :-)

Uhm... Direi che invece è proprio quello che voleva fare lui: passare da 565 a 888. O almeno questo è quello che fa la funzione che ho scritto e che a Vittorio andava bene :-)


Ah, ok.. beh, meglio così allora! ;)
Avevo capito che lui volesse comprimere l'informazione dell'immagine per mostrarla su dispositivi di piccole dimensioni - ma ammetto di aver letto la discussione di fretta e tutta insieme perdendomi probabilmente qualche pezzo ;)

--
Valerio

Tanto per concludere la cosa, la funzione che mi ha mandato Marco è perfetta e funziona come deve. Le immagini RGB565 sono obbligate sui micromonitor che accettano solo quel formato. La funzione che mi serviva ritrasforma le RGB565 in un formato visualizzabile al volo in modo da capire di cosa si tratta. Per questo eventuali degradamenti non sono un grosso problema. Tanto per chiudere il thread, ripasto un microprogrammino che contiene anche la funzione di Beri (Recover).


    def TranlsateImage(im):        #trasforma una immagine in 565
        stringImage=bytes()
        for pixel in list(im.getdata()):
            H=(pixel[2]&248)|pixel[1]>>5
            L=((pixel[1]<<3)&224)|pixel[0]>>3
            stringImage+=struct.pack('<B',H)
            stringImage+=struct.pack('<B',L)
        return stringImage

def RecoverImage(stringImage, width=64, height=48): #riporta l'immagine nel formato leggibile 888
        img = Image.new("RGB", (width, height))
        data = []
        for i in range(0, len(stringImage), 2):
            H, L = struct.unpack_from("<BB", stringImage, i)
            pixel_2 = H&248
            pixel_1 = (H&7<<5)|((L&224)>>3)
            pixel_0 = (L&31)<<3
            data.append((pixel_0, pixel_1, pixel_2))
        img.putdata(data)
        return img

vittorio

_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python

Rispondere a