Grayscale Image anzeigen lassen..

  • Hallo!

    Ich hab ein Problem, bei dem ich nicht weiter komm. Und zwar möchte ich 8 Bit Bilder (Grauwert) in meinem GUI anzeigen lassen, aber irgendwie ist der Output ganz komisch. Hab schon etliches probiert.. mit 24 Bit funktionierts einwandfrei.. hier codeausschnitte:

    Bitmapinfoheader auslesen und Bild anzeigen (24 Bit)



    Änderungen für 8 Bit:



    Ich setz den biBitCount von 24 auf 8, die größe vom Bild ist auch anders, als im 24 Bit Image, nämlich nur ein drittel, also (Breite*Höhe) statt (Breite*Höhe*3).
    biClrUsed = 256 sagt, dass eine Palette verwendet wird, wobei 256 Werte darin vorkommen. Am Schluss füll ich die Palette.. sieht jemand einen Fehler? Wenn jemand Beispielbilder sehen will, kann ich das machen, aber ich hoffe, dass jemand den Fehler jetzt schon sieht.

    mfg

    640K ought to be enough for anybody. :eek2:

  • Also ich hab einmal die Szene laufen lassen und mittendrin auf 8 Bit umgeschalten und das kommt dabei raus: (Bild 1) das is ein Thresholdbild, also nicht wundern, warum das so komisch aussieht.. das Inputbild sieht dann so aus: (Bild 2). Normal schauts so aus: (Bild 3)

    Ich versteh die Aufteilung nicht ganz.. die Schrittweite müsste er doch checken, wenn ich ihm 8 bpp mitgeb.. komisch..

    640K ought to be enough for anybody. :eek2:

  • Hab da jetzt nicht soo tief in den Code geschaut, aber reichts wirklich, die Bits runterzusetzen? Musst du nicht selbst das Bild runterrechnen?

    In einen FBO rendern ist wie eine Schachtel Pralinen - man weiß nie, was man kriegt.

  • Tschuldige das hab ich vergessen.. das Inputbild schaut so aus

    RGB RGB RGB RGB RGB RGB...
    RGB RGB RGB RGB RGB RGB...
    ....

    Das Bild, dass ich zu 8 bit anzeigen lassen möchte liegt so im Speicher..

    G G G G G G...
    G G G G G G...
    ...

    Also das hab ich schon beachtet.. von dem her müssts ja gehn, weil die Schrittweite ja 1 Byte pro Bixel ist und nicht 3 Byte. An der Palette liegts sicher mal nicht, weil das Bild so komisch aufgebaut ist.. da hats woanders was. Man hängt immer bei den unnötigsten Dingen.. *argh*

    640K ought to be enough for anybody. :eek2:

  • Hm, wenns planar im Speicher liegt, sind die Bereiche vielleicht ungleich groß. Sprich: Es kommen auf 2 grüne Pixel z.B. ein roter und ein blauer. Die roten und blauen Bereiche sind dann vielleicht halb so groß, und jeder Wert wird zweimal verwendet. Kontrollier mal, ob Grün wirklich ein Drittel füllt.

    In einen FBO rendern ist wie eine Schachtel Pralinen - man weiß nie, was man kriegt.

  • Natürlich belegen sie gleich viel Platz, sonst würde das Inputbild auch anders aussehen, denn das kommt auch aus meiner Datenstruktur.. komisch komisch.. Ich habs mit einem anderen Konstruktor probiert:

    Bitmap offBmp( m_InputImage->GetWidth(),
    m_InputImage->GetHeight(),
    m_InputImage->GetWidthStep(),
    PixelFormat8bppIndexed,
    m_InputImage->GetDataPtr() );

    Das Bild ist zwar auf dem Kopf, aber es funktioniert.. trotzdem möchte ich es anders haben.. im Prinzip ist hier nichts anders, sogar das PixelFormat8bppIndexed ist äquivalent zu dem was ich mach.. wenn das Bild einmal richtig stehen würde, wärs ja mal was.. ich bin schon ewig am probieren.. gibts ja nicht..

    640K ought to be enough for anybody. :eek2:

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!