mirror of
https://git.code.sf.net/p/libpng/code.git
synced 2025-07-10 18:04:09 +02:00
[libpng16] Corrected estimate of error in libpng png_set_rgb_to_gray API.
The API is extremely inaccurate for sRGB conversions because it uses an 8-bit intermediate linear value and it does not use the sRGB transform, so it suffers from the known instability in gamma transforms for values close to 0 (see Poynton). The net result is that the calculation has a maximum error of 14.99/255; 0.5/255^(1/2.2). pngstest now uses 15 for the permitted 8-bit error. This may still not be enough because of arithmetic error.
This commit is contained in:
committed by
Glenn Randers-Pehrson
parent
5578c3719e
commit
aa725a375c
@@ -848,7 +848,7 @@ get_pixel(Image *image, Pixel *pixel, png_const_bytep pp)
|
||||
static int error_to_linear = 811; /* by experiment */
|
||||
static int error_to_linear_grayscale = 424; /* by experiment */
|
||||
static int error_to_sRGB = 6; /* by experiment */
|
||||
static int error_to_sRGB_grayscale = 11; /* by experiment */
|
||||
static int error_to_sRGB_grayscale = 15; /* libpng error by calculation */
|
||||
static int error_in_compose = 0;
|
||||
static int error_via_linear = 14; /* by experiment */
|
||||
static int error_in_premultiply = 1;
|
||||
|
||||
Reference in New Issue
Block a user