Create thumbnails without loading entire file into memory

P

Phil Johnson

Hi,

I am working on an ASP.NET 1.1 application that creates thumbnails using the
code below.

Problem is that the code loads an entire file into memory to instantiate the
image (file.Data is a memorystream).

This obviously isnt feasible for large files. Does anybody know of a
thumbnail component that doesn't load the entire file into memory?

Image fullImage = Image.FromStream(file.Data);
// maximum height or width is 100

double imgWidth = Convert.ToDouble(fullImage.Width);
double imHeight = Convert.ToDouble(fullImage.Height);

double divisor = 0;
if(fullImage.Height > fullImage.Width)
{
divisor = (100/imHeight);
}
else
{
divisor = (100/imgWidth);
}
Image thumbnail =
fullImage.GetThumbnailImage(Convert.ToInt32(imgWidth*divisor),
Convert.ToInt32(imHeight*divisor),
new System.Drawing.Image.GetThumbnailImageAbort(rtnVal.ThumbnailCallback),
IntPtr.Zero);

--
Regards,

Phillip Johnson (MCSD For .NET)
PJ Software Development
www.pjsoftwaredevelopment.com
 
G

George Ter-Saakov

I would create thumbnail once and cache it on disk. Next time I would hit
the cached file.
Probably you need to check "Last Modified" date of the original file and the
thumbnail so if original has been changed then recreate thumbnail.

-------------------------------------------------------------
I belive that JPEG images allows to have thumbnails inside of the JPEG
file's data structure.
But it will be much harder to get/put that from/to there rather than do it
with separate file.....

George.
 
P

Phil Johnson

Thanks for the responses.

I suspected you might need to load the whole file into memory which I was
hoping to avoid.... we let people upload files up to 1 GB and if that loads
into memory it will kill the server.

We get files in by buffering them from the request stream to a temporary
file then buffering the data from the temporary file into the data base so we
never have more than about 8k of data in memory at any one time.

We might just have to cap the size of files that we can thumbnail in that
case.

--
Regards,

Phillip Johnson (MCSD For .NET)
PJ Software Development
www.pjsoftwaredevelopment.com
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,995
Messages
2,570,236
Members
46,822
Latest member
israfaceZa

Latest Threads

Top