Jump to content

I FINALLY reached the limit of Paint.NET

Recommended Posts

Simply one of the best applications on the market today, and FREE (?) amazing.


So i was building a collage for a printed banner (3x6 feet) and thought "Hey, let's max this mother out". I set my canvas to 6x3 at 300dpi. Everything worked beautifully until I hit about 30 layers (of small-ish clips, each one ~40MB PNGs). My PDN file was 450MBs, and loaded up clipped out at ~27GBs RAM (I have 32GBs, i7 2.9GHz, +4GB Quadro M2000M, it's a strong laptop). When I added the ~31st layer it freaked out and crashed. Repeated reboots / attempted downsampling to 150dpi, "flatten image", nadda. Everything spiked through the ceiling on the RAM and crashed the app. I ended up resolving by flatten each layer one-by-one, and watched my RAM drop about 1GB per layer, until I got it down to just one flat layer (slowly). I was then able to add the remaining 10 layers, scale them, and export to a format supported by the website (max 50MegaPixel).
Though frustrating ... the tool produced an amazing result and over a decade of pleasure using it. I love you Paint.NET. Thanks.

--forget PhotoShop or PaintShopPro .. THIS is the only tool the most of us need.

Link to comment
Share on other sites

:) Glad you like it!


Yeah this is one of those areas where Paint.NET doesn't currently scale. There's a lot of work to be done here, but in principle it's all totally possible. Version 4.0 made a lot of progress in this area, but huge images and tons of layers are still two big sore points.


Huge images don't work well because there is some internal bookkeeping which has performance proportional to the total number of pixels. This can be solved if I can find a solid week to focus on doing some magic quad-tree or oct-tree thing for the invalidation and repainting stuff.


For "tons of layers," there are 2 reasons this doesn't work well. I'll assume that most of your layers are "sparse" -- that is, most of the pixels are transparent. So, the rendering code doesn't distinguish between "empty" and non-empty areas, so performance will always degrade with each layer you add (it ca'nt just skip over fully transparent areas). Second, memory usage also can't distinguish. So all pixels -- even blank ones -- always take up memory. Fixing this is a much larger work item and involves changes to many parts of the code. It is still one of the large unsolved challenges in Paint.NET (mostly due to lack of time, not because it requires patent-worthy algorithm innovations).


Oh, and the third reason is that Paint.NET doesn't handle all out-of-memory situations very well.


Eventually these will be fixed. Until then, the best way you can help is basically what you've done: describe the issue thoroughly. But, also it helps to include a really simple list of steps to reproduce the issue, and maybe include a PDN that helps with that. For instance "1. load this PDN [include dropbox link or something], 2. duplicate layer 5, then 3) oops it crashes". Then I can file an Issue over on github to track it.

The Paint.NET Blog: https://blog.getpaint.net/

Donations are always appreciated! https://www.getpaint.net/donate.html


Link to comment
Share on other sites

Also, if you really want to use Paint.NET to work on really really large images, here are my suggestions for having the best possible experience today:


1) make sure your C drive is an SSD (more specifically, your OS drive). This ensures that the history data will save and load quickly. NVMe is better than SATA.

2) have a fast CPU. A dual core won't cut it. 4, 6, 8 ... as many cores as you can get! AMD's new 8-core Ryzen is actually a really good CPU for Paint.NET and I highly recommend it over Intel's quad core offerings. This also helps #1 -- many of the history items are compressed in order to reduce I/O, which helps a lot on HDDs but also on SSDs, and the code is usually parallelized which means it goes even faster with more CPU cores.

3) have tons of RAM. How much depends on what you're doing. As you saw, 32GB was barely able to handle your workload. 64GB would be even better, of course, but that's not easy to cram into a laptop

4) If you're really serious, don't use a laptop. Get a full blown desktop. This way you can get that 8-core Ryzen or i7-6900K, you can get a large C drive that's NVMe, you can get as much RAM as your bank will allow you to borrow money for ...

5) And if you're really serious, consider getting a Dual Xeon workstation. This is basically just a corollary of #2 though. This is a very expensive route to go.

6) Consider using Photoshop instead. I'm not joking -- especially if you're doing this professionally, you must consider this. I won't recommend GIMP because it's not really usable, but you can try that as well.


For reference, I do Paint.NET development and testing on a Dual Xeon E5-2687W "V1" (16 cores total, 3.1 GHz, Sandy Bridge) with 64GB of RAM and my C drive is an Intel 730 480GB SSD.


The GPU that you have isn't terribly important. Hardware acceleration does help, but having a GeForce 1080 Ti ( https://www.nvidia.com/en-us/geforce/products/10series/geforce-gtx-1080-ti/ ) won't give you a significantly better experience than if you were using, say, a GeForce 720 ( http://www.geforce.com/hardware/desktop-gpus/geforce-gt-720 ).

  • Upvote 1

The Paint.NET Blog: https://blog.getpaint.net/

Donations are always appreciated! https://www.getpaint.net/donate.html


Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Create New...