[fpc-devel] Problem reading pgm image

2010-11-05 Thread Leonardo M . Ramé
Hi, I'm loading PGM files to a TImage.Picture using its LoadFromFile or 
LoadFromStream methods.

This works well on small to medium sized images, but I'm getting an
EReadErrorEReadError exception if I try to load images of 16mb or more.

After debugging this, I stopped at fpreadpnm.pp, in this method:

procedure TFPReaderPNM.InternalRead(Stream:TStream;Img:TFPCustomImage);
var
  Row:Integer;
  l: Integer;
begin
  ReadHeader(Stream);
  Img.SetSize(FWidth,FHeight);
  FScanLineSize:=FBitPP*((FWidth+7)shr 3);
  GetMem(FScanLine,FScanLineSize);
  try
for Row:=0 to img.Height-1 do
  begin
  ReadScanLine(Row,Stream);
  WriteScanLine(Row,Img);
  end;
  finally
Row := l;
FreeMem(FScanLine);
  end;
end;

The ReadScanLine method uses the FScanLineSize to read from a Stream
using Stream.ReadBuffer with a size of FScanLineSize, and it seems like
in my image, in a specific row (4734 to be clear) it has a different line size 
than the
expected by FScanLineSize.

Maybe the formula used to calculate the scan line size is wrong?.

I can open my image with many viewers like Eye of Gnome, or Gimp without
problems.

Here's the image:
http://www.tarjeta-salud.com.ar/downloads/salida.pgm

Hope someone can help me fix this.

http://leonardorame.blogspot.com
Leonardo M. Ramé



___
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel


Re: [fpc-devel] Problem reading pgm image

2010-11-05 Thread Leonardo M . Ramé
I filled a bug report about this here:

http://bugs.freepascal.org/view.php?id=17840

Leonardo M. Ramé
http://leonardorame.blogspot.com





___
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel