Question

Je dois lire tga avec de PyQt et jusqu'à présent cela semble fonctionner très bien, sauf si un tga dispose de 2 octets par pixel, par opposition à 3 ou 4. Mon code est pris d'ici http://pastebin.com/b5Vz61dZ .

Plus précisément cette section:

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

et cette partie:

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

comment pourrais-je entrer le pixel [0] et pixel [1] Les valeurs pour créer obtenir les valeurs dans le format correct et colorspace?

Toutes les pensées, idées ou aide s'il vous plaît !!!

Était-ce utile?

La solution

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

fonctionne pour moi. Luminance correcte et tout. Bien que je ne suis pas sûr que doubler le pixel valeur [1] fonctionnerait pour tous les cas.

Merci pour toute l'aide istepura:)

Autres conseils

http: //lists.xcf.berkeley. edu / listes / gimp-développeur / 2000-Août / 013021.html

"Les pixels sont stockés dans l'ordre petit-boutiste, au format BGR555."

Alors, vous devez prendre "les plus à gauche" 5 bits de pixel [1] comme bleu, reposer 3 bits + 2 "plus à gauche" bits de pixel [0] serait vert, et ensuite 5 bits de pixel [0] serait rouge.

Dans votre cas, je suppose, le code doit être quelque chose comme:

pixel = [(pixel[1]&0xF8)>>3, ((pixel[1]&0x7)<<2)|((pixel[0]&0xC0)>>6), (pixel[0]&0x3E)>>1)
color = qRgb(*pixel)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top