Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi GraphicEx und P(E)NG! (https://www.delphipraxis.net/128553-graphicex-und-p-e-ng.html)

Mattze 1. Feb 2009 11:03


GraphicEx und P(E)NG!
 
Hi,

nachdem ich eine png-Graphic mit GraphicEx geöffnet habe,
zeigt mir FastMM4 einen "schönen" Fehler an:
"Der Block-Footer (Line) ist fehlerhaft."

Ich habe das mit verschiedenen Programmen überprüft, nicht nur den eigenen.
Immer dasselbe.

Weiß jemand, was da zu tun ist?

Gruß
Mattze

Gausi 1. Feb 2009 11:13

Re: GraphicEx und P(E)NG!
 
Die Methode hat da ein Memoryleak. Wenn man was googelt, findet man die Lösung:

Füge in der Methode TPNGGraphic.LoadFromStream(Stream: TStream); ungefähr in Zeile 6985 ein FreeMem(FRawBuffer); ein - unmittelbar vor FRawBuffer := nil;

Delphi-Quellcode:
// ...
      FPalette := 0;
      FTransparency := nil;
      FBackgroundColor := clWhite;
      FTransparentColor := clNone;

      // first chunk must be an IHDR chunk
      FCurrentCRC := LoadAndSwapHeader;

!!!!  FreeMem(FRawBuffer);
      FRawBuffer := nil;
      ColorManager.SourceOptions := [coNeedByteSwap];
      try
        // read IHDR chunk
        ReadDataAndCheckCRC;
        Move(FRawBuffer^, Description, SizeOf(Description));
// ...

Mattze 1. Feb 2009 13:32

Re: GraphicEx und P(E)NG!
 
Vielen Dank für die schnelle Antwort.

Ich habe das eingebaut, kriege aber weiterhin den gleichen Fehler.
Da sage ich jetzt aber nichts, weil ich erst noch ein bisschen probieren muss!

Momentan habe ich als "Zwischenlösung" erst mal alles auf pngimage umgebaut.
Geht auch sehr gut.

Gruß
Mattze


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:08 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