Jump to content

Bits per channel/Paint.NET


Recommended Posts

Rick, How many bits per channel is Paint.NET?

I was reading about a new piece of open-source software for images/frame editing called "CinePaint" http://www.cinepaint.movieeditor.com/ (the Windows version is currently unavailable until "Glasgow" is finished) and it boasts an amazing 32-bits per channel!

According to the Cinepaint front page: The Gimp is only 8-bits and even Photoshop is only 16-bits. More bits mean more detail and higher resolution, so where does Paint.NET stand?

Thanks for answering.

Link to post
Share on other sites

Paint.NET is currently 8-bits per channel.

Or rather, the only type of layer that Paint.NET currently supports is an 8-bit per channel bitmap layer. The composition (aka rendering) code and file format are layer-type agnostic, so in the future we could technically add 32-bits per channel bitmap layers, text layers, adjustment layers, procedural layers (type in math equations or something), etc. But that's a long ways off.

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

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

forumSig_bmwE60.jpg

Link to post
Share on other sites

Thanks for the response, I didn't think the "untouchable" Photoshop was only 16-bit. With it's program tailored for digital cameras and scanners, I would think that it would be a little deeper than that in the resolution dept.

Anyhow, I still favor Paint.NET's UI over that other one, plain old gray and black boxes just don't have the same "pizazz" that they might have had back in the day.

And since most images on the web are only 8-bit, it wouldn't make sense to add any more resolution to them since the images would only be compressed and then transmitted from server to client on the internet.

Link to post
Share on other sites

There would still be benefit to having 16 bits per channel, or more. The main drawback is performance and memory usage (it goes up proportionally!), although the gradual adoption of 64-bit will make the latter less of a worry.

The main benefit would be preserving precision between multiple operations. For example, right now if you adjust the brightness of an image so that it's really bright, the color values scrunch up to the upper end of the available precision. If you then make the image darker to get it back to normal, you will have what looks like a very splotchy image. To put this in numerical terms, let's say the values in the original image of 220 through 255 were then brightened to be 255 (i.e. [220,255] was mapped to 255), and 190 through 219 were mapped to 254. Then when you make this darker, we only know these values as 254 and 255 ... so these get mapped back to 220 and 255, respectively, with no way to "get back" all the intermediate values.

If we were to store pixels with more precision, we might have 220.0 through 255 map to 254.1 through 255.0, and then 190 through 219.9 would map to 253.0 through 254.0. Then, on the return trip, 255.0 would map to 255.0, 249.5 might map to 237.5, and 249.0 would map to 220.0, etc.

Even if you just save to JPEG eventually for distribution, it makes working with layers and making continuing adjustments a much richer experience.

Anyway that's probably a medium-to-terrible explanation, hopefully it makes enough sense :)

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

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

forumSig_bmwE60.jpg

Link to post
Share on other sites
There would still be benefit to having 16 bits per channel, or more. The main drawback is performance and memory usage (it goes up proportionally!), although the gradual adoption of 64-bit will make the latter less of a worry.

That's what I forgot to mention before, will having a 64-bit version of Paint.NET make it easier to work with bits per channel (and larger images in general) than the 32-bit standard we work with now? The performance and memory was something I thought about in hindsight and that would take up more of the system's resources gradually.

Yeah, that explanation made enough sense :lol:

I liken it's algorithm to the compression used in compressing .zip and .rar files but using images instead.

Link to post
Share on other sites

Hmm well it's not like compression at all :) It's just a matter of rounding error. If I add 20% to 211, I get 253.2. But with 1 byte I can only store the value 253. So my rounding error is 0.2. After rounding many times you get pretty far away from what the real value should be. Having 16- or 32-bit precision allows your rounding error to be much, much smaller.

The main benefits Paint.NET will see from 64-bit (we're talking v2.6 here) are performance and access to more memory. Right now if you open a large image you can't do much without running into an out-of-memory error (d'oh). As for performance, I've done some preliminary benchmarks and there's a healthy boost for certain operations in Paint.NET.

Having 64-bit will make it easier to work with more bits per channel in the sense that you have more memory to work with and thus have a better chance of actually fitting your image in memory (with Paint.NET's architecture anyway). It won't make my life as a developer easier -- the programming is pretty much the same. Although I guess it will make fewer people reporting "Out of memory" crashes :)

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

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

forumSig_bmwE60.jpg

Link to post
Share on other sites
  • 2 weeks later...
  • 10 months later...
Guest
This topic is now closed to further replies.
×
×
  • Create New...