On Mon, May 30, 2011 16:16, michael.vancann...@wisa.be wrote: > > Try the following code: > > Img:=TFPMemoryImage.Create(0,0); > Img.UsePalette:=False; > Img.loadFromFile(FileList[i]); > > That should work much faster. The reason is probably that the default > image > created by the reader uses a palette, which is of course dog slow when > reading > large images.
Interesting. What is supposed to be a "large image"? I ask because the original post mentioned 35 kB and 65 kB (and indirectly also dimensions around 600x400 if I understand the program output correctly) which I certainly wouldn't consider as "large" (and the mentioned time necessary for reading it surely not appropriate regardless of using palette or not). I guess that some optimization may be reasonable because such pictures could be loaded and displayed (including conversion from true colour to 256 colours palette) faster even on a 486 machine... Tomas > > On Mon, 30 May 2011, Ben Smith wrote: > >> Hi, >> >> I wrote this console utility app in 5 minutes. All it is supposed to >> do, is iterate over *.jpg images (65 at the moment) in a folder (no >> recursive searches), and generate a snipped of HTML that I need to >> paste into my wives website. >> >> I first thought my utility app is in some recursive loop or something >> because the output didn't appear instantly - like I thought it would. >> >> I added some debug output between the generate HTML. To my surprise >> the FPImage code reading a 35Kb jpg file takes +- 8 seconds and a 65KB >> file takes +- 30 seconds - on a Quad Core machine! WTF??? >> >> Is this normal? Is FPImage really that slow reading small roughly >> 650x450 pixel jpg images? Or am I doing something unbelievably >> stupid? :-/ >> >> The reason I'm reading in the jpg files is so I can get their Width >> and Height values. Avg. jpeg file sizes are between 35-45KB, and >> largest file size is 65KB. >> >> Here is the relevant code snippet.... >> >> var >> imgreader: TFPReaderJPEG; >> stream: TFileStream; >> img:TFPCustomImage; >> >> .... >> >> writeln('processing file: ', filelist[i]); >> stream := TFileStream.Create(filelist[i], fmOpenRead); >> writeln(1); >> imgreader := TFPReaderJPEG.Create; >> writeln(2, FormatDateTime(' hh:mm:ss.zz', Now) + ' (start reading)'); >> img := imgreader.ImageRead(stream, nil); >> writeln(3, FormatDateTime(' hh:mm:ss.zz', Now) + ' (done)'); >> >> >> >> >> Here is the program output... Note the timestamps between start >> reading and done reading (lines marked with '2' and '3'). >> >> >> -------------------[ start ]--------------------------- >> $ ./project1 img/babies/full >> Finished search. Found 65 matches >> --------------------------------------- >> <div id="thumbnails"> >> <table cellspacing="10"> >> <tr align="center" valign="middel"> <!-- Row starts --> >> <td> >> processing file: img/babies/full/babies.01.jpg >> 1 >> 2 16:00:30.210 (start reading) >> 3 16:00:38.338 (done) >> <img src="img/babies/full/babies.01.jpg" alt="" id="screen1" >> class="imglarge" onmouseout="reducethumb(1); return false;" >> onclick="reducethumb(1); return false;"> >> <img src="img/babies/thumbs/babies.01.jpg" alt="" class="imgsmall" >> id="thumb1" onclick="expandthumb(1, 650, 413);"> >> </td> >> </tr> >> <tr align="center" valign="middel"> <!-- Row starts --> >> <td> >> processing file: img/babies/full/babies.02.jpg >> 1 >> 2 16:00:38.338 (start reading) >> 3 16:01:10.447 (done) >> <img src="img/babies/full/babies.02.jpg" alt="" id="screen2" >> class="imglarge" onmouseout="reducethumb(2); return false;" >> onclick="reducethumb(2); return false;"> >> <img src="img/babies/thumbs/babies.02.jpg" alt="" class="imgsmall" >> id="thumb2" onclick="expandthumb(2, 650, 435);"> >> </td> >> </tr> >> <tr align="center" valign="middel"> <!-- Row starts --> >> <td> >> processing file: img/babies/full/babies.03.jpg >> 1 >> 2 16:01:10.447 (start reading) >> 3 16:01:28.859 (done) >> <img src="img/babies/full/babies.03.jpg" alt="" id="screen3" >> class="imglarge" onmouseout="reducethumb(3); return false;" >> onclick="reducethumb(3); return false;"> >> <img src="img/babies/thumbs/babies.03.jpg" alt="" class="imgsmall" >> id="thumb3" onclick="expandthumb(3, 405, 650);"> >> </td> >> </tr> >> <tr align="center" valign="middel"> <!-- Row starts --> >> <td> >> processing file: img/babies/full/babies.04.jpg >> 1 >> 2 16:01:28.859 (start reading) >> >> ....snip.... >> -------------------[ end ]--------------------------- _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal