Reputation: 317
I'm trying to load an extremely large image (14473x25684), but I'm hitting into a memory limitation.
Here's a simple program to demonstrate the problem:
static void Main(string[] args)
{
string largeimage = @"C:\Temp\test_image.jpg"; // 14473x25684
Image i = Bitmap.FromFile(largeimage); // OutofMemoryException was unhandled
}
Now I understand that the issue isn't relevant to how much physical memory I have, but rather is an addressing limitation. Is there anything I can do to get around this limitation?
The image is indeed valid and it opens fine in Photoshop (VM Size: 916MB) and ACDSee. Also don't bother to Google the dimensions as the dimensions listed aren't exact. :)
Thank you for your time.
Upvotes: 6
Views: 1756
Reputation: 3239
OS can not allocate contiguous amount of memory. All you can do about that is use of MemoryFailPoint and catch InsufficientMemoryException.
But this only save you from app crashing.
As for me, to open such a big file you should use binary reader and draw a file via System.Drawing.
here is good question and answers When is it OK to catch an OutOfMemoryException and how to handle it?
Upvotes: 0
Reputation: 117220
The Bitmap class will require around 1.5GB of memory to hold that instance. The .NET memory allocator normally chokes around the 1GB mark.
Upvotes: 4