Out of memory when loading an image file

F

FrankMeng

When I tried to load 2GB tiff file, I got an "out of memory" error.
I have 512MB memory, but I set virtual memory to 5GB.
Is it possible to cut the big tiff file into several sub-images
without loading the whole image?
 
M

Michael A. Covington

I seem to recall that you get a misleading "out of memory" exception when
the format of the image file is wrong, so make sure you can load a smaller
image of the exact same type, and if not, look for other causes of the
problem.
 
P

Peter Duniho

FrankMeng said:
When I tried to load 2GB tiff file, I got an "out of memory" error.
I have 512MB memory, but I set virtual memory to 5GB.

While Michael made a good point about the misleading errors, if your
TIFF is actually 2GB it's not necessarily surprising that you would get
an "out of memory" error trying to load it.

For sure, there's no way you'd be able to load that under 32-bit
Windows. If I recall correctly, even under 64-bit Windows, .NET is
still 32-bit though, and can't deal with objects larger than 2GB.

If your question hasn't been answered either by Michael's post or the
above, you should probably be more specific about the exact environment
you're using to attempt this.
Is it possible to cut the big tiff file into several sub-images
without loading the whole image?

Yes, but AFAIK there's nothing in .NET that would do this for you.
You'll have to parse the TIFF yourself and extract the specific data you
want for each sub-image.

Pete
 
M

Michael A. Covington

Peter Duniho said:
While Michael made a good point about the misleading errors, if your TIFF
is actually 2GB it's not necessarily surprising that you would get an "out
of memory" error trying to load it.

Also, 2 GB is an enormous TIFF. Assuming it's 64 bits per pixel (16-bit
CMYK), that's still 16 megapixels. What is the source of the image?
 
?

=?ISO-8859-1?Q?Arne_Vajh=F8j?=

Peter said:
For sure, there's no way you'd be able to load that under 32-bit
Windows. If I recall correctly, even under 64-bit Windows, .NET is
still 32-bit though, and can't deal with objects larger than 2GB.

I think .NET is 64 bit as in that a reference is 64 bit and can
address in 64 bit space. There are just still a limit on maximum
object size.

Arne
 

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

Top