Domanda

Ho bisogno di leggere TGA di con PyQt e finora questo sembra funzionare benissimo tranne quando una tga ha 2 byte per pixel al contrario di 3 o 4. Il mio codice è preso da qui http://pastebin.com/b5Vz61dZ .

In particolare questa sezione:

def getPixel( file, bytesPerPixel):
    'Given the file object f, and number of bytes per pixel, read in the next pixel and return a     qRgba uint'
    pixel = []
    for i in range(bytesPerPixel):
        pixel.append(ord(file.read(1)))

    if bytesPerPixel==4:
        pixel = [pixel[2], pixel[1], pixel[0], pixel[3]]
        color = qRgba(*pixel)
    elif bytesPerPixel == 3:
        pixel = [pixel[2], pixel[1], pixel[0]]
        color = qRgb(*pixel)
    elif bytesPerPixel == 2:
        # if greyscale
        color = QColor.fromHsv( 0, pixel[0] , pixel[1])
        color = color.value()

    return color

e questa parte:

elif bytesPerPixel == 2:
    # if greyscale
    color = QColor.fromHsv( 0, pixel[0] , pixel[1])
    color = color.value()

come faccio a inserire il pixel [0] e pixel [1] valori per creare ottenere i valori nel formato corretto e spazio colore?

Tutti i pensieri, le idee o aiuto per favore !!!

È stato utile?

Soluzione

pixel = [ pixel[1]*2 , pixel[1]*2 , pixel[1]*2 ]
color = qRgb(*pixel)

funziona per me. luminanza corretto e tutto. Anche se non sono sicuro che raddoppiando il pixel [1] Valore avrebbe funzionato per tutte le istanze.

Grazie per tutto l'aiuto istepura:)

Altri suggerimenti

http: //lists.xcf.berkeley. edu / lists / gimp-developer / 2000-agosto / 013021.html

"I pixel vengono memorizzati in ordine little-endian, in formato BGR555".

Quindi, si deve prendere "più a sinistra" 5 bit di pixel [1] come Blu, riposare 3 bit + 2 "più a sinistra" bit di pixel [0] sarebbe Verde, e successivi 5 bit di pixel [0] sarebbe essere rosso.

Nel tuo caso, suppongo, il codice dovrebbe essere qualcosa del tipo:

pixel = [(pixel[1]&0xF8)>>3, ((pixel[1]&0x7)<<2)|((pixel[0]&0xC0)>>6), (pixel[0]&0x3E)>>1)
color = qRgb(*pixel)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top