AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia 8 Bit Grauwert Bild speichern
Thema durchsuchen
Ansicht
Themen-Optionen

8 Bit Grauwert Bild speichern

Ein Thema von schwarzerlotus · begonnen am 3. Apr 2012 · letzter Beitrag vom 3. Apr 2012
 
schwarzerlotus

Registriert seit: 25. Jul 2011
22 Beiträge
 
#1

8 Bit Grauwert Bild speichern

  Alt 3. Apr 2012, 13:19
Hallo zusammen,

ich verzweifele gerade daran ein 8 bit Bild mit Grauwerten abzuspeichern. Ich greife mir aus einem Bild mit 3 Kanälen einen heraus und speichere die Werte in einem neuen TBitmap mit PixelFormat pf8bit.

Delphi-Quellcode:
  var

    rowGrey: PByte;
    rowRGB: ^TRGBTriple;

...

    image := TBitmap.Create;
    image.PixelFormat := pf8bit;
    image.Width := image1.Picture.Width;
    image.Height := image1.Picture.Height;
    for j := 0 to image1.Picture.Height-1 do begin

        rowGrey := image.ScanLine[j];
        rowRGB := image1.Picture.Bitmap.Scanline[j];

        for i := 0 to image1.Picture.Width-1 do begin
          rowGrey^ := min(round(rowRGB^.rgbtRed), 255);

          inc (rowGrey);
          inc (rowRGB);
        end;
      end;
Wenn ich das nun abspeichere erhalte ich zwar ein Bild mit 8 Bit pro Kanal und einem Kanal aber leider ist das Bild in Farbe und nicht grau.

Ich hab gelesen, dass man bei einem Bild mit PixelFormat pf8bit eine Farb-Palette setzten muss, da sonst die Standard Palette genommen wird die diese dann zu der Farbdarstellung führt.

Gut hab ich also eine Farbpalette gebastelt.

Delphi-Quellcode:
      GrayPal.palVersion := $0300;
      GrayPal.palNumEntries := 256;

      for i := 0 to 255 do
      begin
        GrayPal.palPalEntry[i].peRed := i;
        GrayPal.palPalEntry[i].peGreen := i;
        GrayPal.palPalEntry[i].peBlue := i;
        GrayPal.palPalEntry[i].peFlags := PC_NOCOLLAPSE;
      end;

      image.Palette := CreatePalette(PLogPalette(@Graypal)^);
Wenn ich das Bild allerdings mit der Palette speichere, werden die Farbwerte die sich zwischen den Helligkeitswerten 30 - 50 liegen auf 0 - 255 skaliert angezeigt.

Habt ihr eine Idee woran das liegt? Brauche ich hier eine andere Palette? Gibt es eine andere Möglichkeit die Grauwerte direkt als Werte und nicht als Index für eine LookUpTable abzuspeichern so wie bei pf24bit?
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:23 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz