Sign in to follow this  
Followers 0
david.atwell

Out of memory to load/edit an image? Read this first!

1 post in this topic

Are you getting a "Not enough memory to load this image." error? Is the program refusing to create a new layer, or resize the image?

If you're getting a "file too large" error, your problem might not be what you think it is. Here's Rick's explanation, from another thread:
 

 

Paint.NET's architecture is such that it must:

1) Hold the entire image in memory
2) Have a bitmap used for compositing the image
3) Have a scratch surface

(3) is not always in use, but it's important to have it allocated because it makes error handling much simpler. If you clicked on the Clone Stamp and suddenly got an out of memory error, that would be lame. (2) is not always important, as a single layer image effectively needs no compositing.

So, to compute the memory requirements for an image, the following formula can be used:

(W x H x 4) x (L + 2)

W is the width of the image in pixels, H is the height in pixels, 4 is because each pixel takes 4 bytes, L is the number of layers, and the +2 accounts for (2) and (3) above.

So for your 7680x2880 image, which I assume has 1 layer, the total memory required is:

(7680 x 2880 x 4) x (1 + 2)
= (88473600) x (3)
= 265,420,800
= 253.125 MB RAM

When you resize an image, you must have enough memory to hold the image at both its old and new sizes. Other factors influence how much memory is available. For instance, just because there is still 1 GB of virtual address space available does not mean that there is 1 GB available contiguously.

Programs like Photoshop and The GIMP have complicated memory managers that tile the image, swapping it out to scratch pads (disk) as necessary. This impacts coding complexity because every part of the application that works with the image must take the tiling in to consideration. It also affects performance, but has the advantage of being able to work with much larger images. For Paint.NET, I purposely chose a design that enabled coding simplicity for many reasons.

If you have a 64-bit CPU and OS, you will have a much harder time running out of memory. You may also look into the /3GB switch for the boot.ini file, although I do not know for sure that this will help: http://support.microsoft.com/default.as ... E05B0ABAAA

In addition,

 

Memory management is not as simple as Empty or Full, so even after the algebra you are unfortunately not guaranteed anything.

The current solution for this is to upgrade to a 64-bit version of Windows. [if] your CPU supports it. Then the virtual memory manager will have an enormous amount of breathing room in which to find the contiguous blocks necessary.

 

 

----

 

Please be aware that all of this was written prior to the release of PdN 4.0, and some things may have changed.

Edited by david.atwell
4.0 full release
0

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  
Followers 0