djpeg: Fix PPM output regression w/ color quant.
Regression caused byaa7459050dFix based on:03fbacb8ebCloses #310
This commit is contained in:
@@ -28,6 +28,9 @@ of specifying 1x subsampling (normally 4:4:4 JPEGs have 1x1 luminance and
|
|||||||
chrominance sampling factors), but the JPEG format and the libjpeg API both
|
chrominance sampling factors), but the JPEG format and the libjpeg API both
|
||||||
allow it.
|
allow it.
|
||||||
|
|
||||||
|
6. Fixed a regression introduced by 2.0 beta1[7] that caused djpeg to generate
|
||||||
|
incorrect PPM images when used with the `-colors` option.
|
||||||
|
|
||||||
|
|
||||||
2.0.1
|
2.0.1
|
||||||
=====
|
=====
|
||||||
|
|||||||
9
wrppm.c
9
wrppm.c
@@ -5,7 +5,7 @@
|
|||||||
* Copyright (C) 1991-1996, Thomas G. Lane.
|
* Copyright (C) 1991-1996, Thomas G. Lane.
|
||||||
* Modified 2009 by Guido Vollbeding.
|
* Modified 2009 by Guido Vollbeding.
|
||||||
* libjpeg-turbo Modifications:
|
* libjpeg-turbo Modifications:
|
||||||
* Copyright (C) 2017, D. R. Commander.
|
* Copyright (C) 2017, 2019, D. R. Commander.
|
||||||
* For conditions of distribution and use, see the accompanying README.ijg
|
* For conditions of distribution and use, see the accompanying README.ijg
|
||||||
* file.
|
* file.
|
||||||
*
|
*
|
||||||
@@ -256,6 +256,8 @@ start_output_ppm(j_decompress_ptr cinfo, djpeg_dest_ptr dinfo)
|
|||||||
case JCS_EXT_ABGR:
|
case JCS_EXT_ABGR:
|
||||||
case JCS_EXT_ARGB:
|
case JCS_EXT_ARGB:
|
||||||
case JCS_CMYK:
|
case JCS_CMYK:
|
||||||
|
if (!IsExtRGB(cinfo->out_color_space) && cinfo->quantize_colors)
|
||||||
|
ERREXIT(cinfo, JERR_PPM_COLORSPACE);
|
||||||
/* emit header for raw PPM format */
|
/* emit header for raw PPM format */
|
||||||
fprintf(dest->pub.output_file, "P6\n%ld %ld\n%d\n",
|
fprintf(dest->pub.output_file, "P6\n%ld %ld\n%d\n",
|
||||||
(long)cinfo->output_width, (long)cinfo->output_height, PPM_MAXVAL);
|
(long)cinfo->output_width, (long)cinfo->output_height, PPM_MAXVAL);
|
||||||
@@ -337,13 +339,14 @@ jinit_write_ppm(j_decompress_ptr cinfo)
|
|||||||
((j_common_ptr)cinfo, JPOOL_IMAGE,
|
((j_common_ptr)cinfo, JPOOL_IMAGE,
|
||||||
cinfo->output_width * cinfo->output_components, (JDIMENSION)1);
|
cinfo->output_width * cinfo->output_components, (JDIMENSION)1);
|
||||||
dest->pub.buffer_height = 1;
|
dest->pub.buffer_height = 1;
|
||||||
|
if (!cinfo->quantize_colors) {
|
||||||
if (IsExtRGB(cinfo->out_color_space))
|
if (IsExtRGB(cinfo->out_color_space))
|
||||||
dest->pub.put_pixel_rows = put_rgb;
|
dest->pub.put_pixel_rows = put_rgb;
|
||||||
else if (cinfo->out_color_space == JCS_CMYK)
|
else if (cinfo->out_color_space == JCS_CMYK)
|
||||||
dest->pub.put_pixel_rows = put_cmyk;
|
dest->pub.put_pixel_rows = put_cmyk;
|
||||||
else if (!cinfo->quantize_colors)
|
else
|
||||||
dest->pub.put_pixel_rows = copy_pixel_rows;
|
dest->pub.put_pixel_rows = copy_pixel_rows;
|
||||||
else if (cinfo->out_color_space == JCS_GRAYSCALE)
|
} else if (cinfo->out_color_space == JCS_GRAYSCALE)
|
||||||
dest->pub.put_pixel_rows = put_demapped_gray;
|
dest->pub.put_pixel_rows = put_demapped_gray;
|
||||||
else
|
else
|
||||||
dest->pub.put_pixel_rows = put_demapped_rgb;
|
dest->pub.put_pixel_rows = put_demapped_rgb;
|
||||||
|
|||||||
Reference in New Issue
Block a user