Einzelnen Beitrag anzeigen

HPW

Registriert seit: 28. Feb 2003
160 Beiträge
 
Delphi 7 Professional
 
#1

GraphicEx Tiff m.256 Farben laden falsche Farbe

  Alt 11. Feb 2009, 19:49
Hallo,

Ich versuche mit dem aktuellen Stand von GraphicEx eine 256 Farb-Tiff Datei zu laden.

Testdatei: http://www.hpwsoft.de/Wolf1.zip

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  I : integer;
  Picture : TPicture;
begin
  if OpenPictureDialog1.Execute then
    with OpenPictureDialog1.Files do
      for I := 0 to Count - 1 do
      begin
         Picture := TPicture.Create;
         try
           Picture.LoadFromFile(Strings[I]);
           if not (Picture.Graphic is TBitmap) then
             BEGIN
              Picture.Graphic.Transparent := True;
              stampimage.Width := Picture.Width;
              stampimage.Height := Picture.Height;
              stampimageW := stampimage.Width;
              stampimageH := stampimage.Height;
              stampimage.Canvas.Draw(0, 0, Picture.Graphic);
             END
           Else
             BEGIN
              Picture.Bitmap.Transparent := True;
              showmessage(IntToStr(Picture.Bitmap.canvas.pixels[0,0]));
              Picture.Bitmap.TransparentColor := Picture.Bitmap.canvas.pixels[0,0];
// showmessage(IntToStr(clAqua));
// Picture.Bitmap.TransparentColor := clAqua;
              Picture.Bitmap.TransparentMode := tmFixed;
// Picture.Bitmap.TransparentMode := tmAuto;
              stampimage.Width := Picture.Width;
              stampimage.Height := Picture.Height;
              stampimageW := stampimage.Width;
              stampimageH := stampimage.Height;
              stampimage.Assign(Picture.Bitmap);
             END;
         except
           // no exceptions please, just ignore invalid images
           Application.ProcessMessages;
         end;
      end;
end;
Das Problem ist das die Hintergrundfarbe nicht korrekt aus der Palette gelesen wird.
Statt clAqua=16776960 hat der Hintergrund 16711168 also statt RGB 0,255,255 ist es 0,254,254.
Mit BMP,PNG in 256 Farben usw. ist das kein Problem.

Edit: Weitere Tests zeigen das die RGB-Werte immer um 1 kleiner sind. Nur 0 bleibt 0.
Hans-Peter
  Mit Zitat antworten Zitat