QRGBからピクセルTGAの色ごとに2ビット
質問
TGAをPYQTで読む必要がありますが、これまでのところ、TGAが3または4ではなくピクセルあたり2バイトの場合を除き、これは正常に機能しているようです。 http://pastebin.com/b5vz61dz.
具体的には、このセクション:
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
そしてこの部分:
elif bytesPerPixel == 2:
# if greyscale
color = QColor.fromHsv( 0, pixel[0] , pixel[1])
color = color.value()
Pixel [0]およびPixel [1]値を入力して、正しい形式とColorspaceで値を取得するにはどうすればよいですか?
考え、アイデア、または助けてください!!!
解決
pixel = [ pixel[1]*2 , pixel[1]*2 , pixel[1]*2 ]
color = qRgb(*pixel)
私のために働きます。正しい輝きとすべて。ピクセル[1]の値がすべてのインスタンスで機能するかどうかはわかりませんが。
すべての助けをありがとうISTEPURA :)
他のヒント
http://lists.xcf.berkeley.edu/lists/gimp-developer/2000-august/013021.html
「ピクセルは、BGR555形式のリトルエンディアンの順序で保存されます。」
したがって、青、休憩3ビット + 2 "左"ビットのピクセル[0]が緑色になり、次の5ビットのピクセル[0]が赤であるため、「左端」のピクセル[1]を服用する必要があります。
あなたの場合、コードは次のようなものでなければなりません。
pixel = [(pixel[1]&0xF8)>>3, ((pixel[1]&0x7)<<2)|((pixel[0]&0xC0)>>6), (pixel[0]&0x3E)>>1)
color = qRgb(*pixel)
所属していません StackOverflow