RGB wert auslesen. ergebnis falsch

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

beanage.johannes

Betreff: RGB wert auslesen. ergebnis falsch

BeitragDi, Mai 12, 2009 23:35
Antworten mit Zitat
Benutzer-Profile anzeigen
hi, ich lese den RGB wert aus einem pixmap mit 4 funktionen die ich mir geschrieben habe:


Code: [AUSKLAPPEN]

Function getPixmapRed:Int(pixmap:TPixmap,x:Int,y:Int)

   Local position:Int = ReadPixel(pixmap,x,y)
   
   Return (position Shl 12) Shr 24

EndFunction

Function getPixmapGreen:Int(pixmap:TPixmap,x:Int,y:Int)

   Local position:Int = ReadPixel(pixmap,x,y)
   
   Return (position Shl 16) Shr 24

EndFunction

Function getPixmapBlue:Int(pixmap:TPixmap,x:Int,y:Int)

   Local position:Int = ReadPixel(pixmap,x,y)
   
   Return (position Shl 24) Shr 24

EndFunction

Function getPixmapAlpha:Int(pixmap:TPixmap,x:Int,y:Int)

   Local position:Int = ReadPixel(pixmap,x,y)
   
   Return (position Shl 8) Shr 24

EndFunction


nur ist das ergebnis immer etwas daneben... bei einen rotton den ich im mal - programm male zeigt mein wert 240 stat 255 an...weis net warum. jemand ne idee?

Danke

BladeRunner

Moderator

BeitragDi, Mai 12, 2009 23:55
Antworten mit Zitat
Benutzer-Profile anzeigen
kann es sein dass Du 16-Bit Farbe eingestellt hast? Wäre eine Möglichkeit warum die Farbe falsch ausgelesen wird.
Alternativ: Speicherst Du die Bilder als jpeg? Das ist ien verlustbehaftetes Format und es mag sein dass da Farben verfälscht werden beim Speichern.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

beanage.johannes

BeitragDi, Mai 12, 2009 23:59
Antworten mit Zitat
Benutzer-Profile anzeigen
nein speichere sie als png.
kann das am mac liegen? nee oder?

danke

BladeRunner

Moderator

BeitragMi, Mai 13, 2009 0:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Ach, ich seh grad du shiftest 12 bits, das ist natürlich Käse.
Die Farbinfos nehmen jeweils 8 Bits ein, also musst du zurückgeben (bei ARGB):
A: wert shr 24
r: (wert shr 16) & $ff
g:(wert shr 8) & $ff
b:wert &$ff
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

beanage.johannes

BeitragMi, Mai 13, 2009 0:53
Antworten mit Zitat
Benutzer-Profile anzeigen
ups^^habe auch gerade gemerkt^^ danke Very Happy
 

Ava

Gast

BeitragMi, Mai 13, 2009 1:41
Antworten mit Zitat
Die Reihenfolge der Farbwerte ist aber auch vom Pixmap-Format abhängig.

beanage.johannes

BeitragMi, Mai 13, 2009 13:41
Antworten mit Zitat
Benutzer-Profile anzeigen
BigEndian und LittleEndian.. wirum ist eigentlucBig und wierum Little endian?

BladeRunner

Moderator

BeitragMi, Mai 13, 2009 13:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Pixmap-Format ist was anderes als little und big endian.
Es gibt verschiedene Pixmapformate, das übliche ist A8R8G8B8, also je 8 bit pro Kanal, und alpha höchstwertig.
Es gibt aber auch RGBA und nicht 32-Bit-Pixmaps. Siehe dazu in deiner BMax-Doku.
Little und Big Endian:
http://de.wikipedia.org/wiki/Big_endian

HF.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group