Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Minimalistische GIF-Komponente? (https://www.delphipraxis.net/34129-minimalistische-gif-komponente.html)

Dani 17. Nov 2004 21:00


Minimalistische GIF-Komponente?
 
Guten Abend,

Ich bin auf der Suche nach einer Komponente, die nichts weiter können soll als ein GIF-Bild (einen der Frames) möglichst ressourcenschonend auf ein TBitmap auszugeben. Da es sich um sehr große Bilder handelt, darf ich keinen Speicher verschwenden *g*

TjvGifImage und TGifImage benutzen interne Bitmaps zur Darstellung der Grafik, reicht es dann, wenn ich TargetBMP den Handle des internen Bitmaps zuweise und anschließend die GIF-Graphik freigebe? Wird dadurch nicht der Handle ungültig?

Hier mal der Code, den ich zum laden verwende (kann man da noch was verbessern? :gruebel:)

Delphi-Quellcode:
procedure TForm1.LoadResourceGraphic(ResName: String;
  SrcFormat: TPictureFormat; TargetBMP: TBitmap);
var RS: TResourceStream;
    SrcGraphic: TGraphic;
begin
 SrcGraphic := nil;
 RS := TResourceStream.Create(HINSTANCE, ResName, 'FORGEPIC');
 try
  case SrcFormat of
   TBMP: TargetBMP.LoadFromStream(RS);
   TGIF: begin
          SrcGraphic := TJvGifImage.Create;
         end;

   TJPG: begin
          SrcGraphic := TJPEGImage.Create;
         end;
  end;

  If Assigned(SrcGraphic) then
   try
    SrcGraphic.LoadFromStream(RS);
    TargetBMP.Width := SrcGraphic.Width;
    TargetBMP.Height := SrcGraphic.Height;
    TargetBMP.Canvas.Draw(0, 0, SrcGraphic);
   finally
    SrcGraphic.Free;
   end;
 finally
  RS.Free;
 end;
end;
Tausend Dank schonmal fürs lesen!

Gruß,
Dani

DennisHB 19. Nov 2004 16:52

Re: Minimalistische GIF-Komponente?
 
Code:
SrcGraphic.LoadFromStream(RS);
TargetBMP.Width := SrcGraphic.Width;
TargetBMP.Height := SrcGraphic.Height;
TargetBMP.Canvas.Draw(0, 0, SrcGraphic);
kann man glaub ich durch

Code:
TargetBMP.Assign(SrcGraphic);
ersetzen...

Dani 1. Dez 2004 20:45

Re: Minimalistische GIF-Komponente?
 
Da ist zwar weniger Schreibarbeit, macht das Programm aber weder schneller noch braucht es weniger Speicher...

135 MB Speicherverbrauch, um ein 8.3 MB großes Bild (16 Farben Bitmap -> 200kb großes GIF ) zu drucken finde ich nicht gerade akzeptabel. :(


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:58 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz