[fpc-devel] Extract the color data and alpha from a PNG image
Mattias Gaertner
nc-gaertnma at netcologne.de
Wed Feb 6 13:31:45 CET 2013
silvioprog <silvioprog at gmail.com> hat am 5. Februar 2013 um 16:08 geschrieben:
> 2013/2/5 Mattias Gaertner <nc-gaertnma at netcologne.de
> <mailto:nc-gaertnma at netcologne.de> >
> > > On Tue, 5 Feb 2013 12:37:24 -0200
> > silvioprog < silvioprog at gmail.com <mailto:silvioprog at gmail.com> > wrote:
> >
> > > Hello friends,
> > >
> > > I'm trying to extract the color data and alpha from a PNG image. In PHP
> > > it
> > > is very easy to implement, but in FPC I don't know how to do it. I
> > > tried to
> > > do it via "chunk.data", "ZData" etc., but, without success.
> > >
> > > Attached two files to test it. To test the PHP code run this command in
> > > your terminal:
> > >
> > > php -f fpdf.php
> > >
> > > The in FPC code is partially complete.
> > Have you tried fpimage?
> >
> > uses
> > fpreadpng, fpimage;
> >
> > var
> > image: TFPCustomImage;
> > reader: TFPCustomImageReader;
> > x,y: integer;
> > c: TFPColor;
> > begin
> > Image := TFPMemoryImage.Create(0, 0);
> > Reader := TFPReaderPNG.Create;
> > Image.LoadFromFile(AFileName, Reader);
> > for y:=0 to Image.Height-1 do
> > for x:=0 to Image.Width-1 do begin
> > c:=Image.Colors[x,y];
> > writeln(c.Alpha,' ',c.Blue);
> > end;
> > //...
> >
> > Mattias
> > >
> Yes, I tried it too, but, without success. :(
>
> See my new code in attached. It generates the data, but with wrong content.
c.Alpha, c.Blue are word, not byte.
BTW, reading and writing to/from Filestream should be done in chunks, not in
bytes. That's dog slow.
Use a TMemoryStream as cache.
Mattias
More information about the fpc-devel
mailing list