[Lazarus] Need Testers

Mattias Gaertner nc-gaertnma at netcologne.de
Tue Apr 29 10:50:10 CEST 2008


Valdas Jankūnas wrote:
> Hello,
>   how i can read PNG image from Lazarus resources using TLazIntfImage?
> I tried TPortableNetworkGraphic to read transparent PNG from resource
> or file, but in transparent areas of saved PNG image i get random
> garbage.Code:
>     img:=TPortableNetworkGraphic.Create;
 >     img.LoadFromFile(FAILAS_OUT);
 >     img.SaveToFile(FAILAS_IN);
 >     img.Free;
> This code is correct? If so i report bug to bugtracker.

When you only loading, the stream loaded from is internally stored, so 
when you only save this stream is saved. It should result in an exact 
copy of your source.
However if you modify something, then it depends on the widgetset (since 
it gets converted to a bitmaphandle first). On Gtk1 or Gtk2 this will 
replace your 8bit alpha channel with a 1 bit channel.

> If i doing same test (with file) using TLazIntfImage with
> TFPCustomImageReader and TFPCustomImageWriter, then i get correct
> results, but i not know how using TLazIntfImage load image from
> resource.

See TCustomBitmap loadfromlazarusresource code.

I think somehow after the image is loaded, TPortableNetworkGraphic 
thinks something is changed and the original stream isn't saved.


Marc



More information about the Lazarus mailing list