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.