diff options
author | Adrian Johnson <ajohnson@redneon.com> | 2012-01-25 22:44:27 +1030 |
---|---|---|
committer | Adrian Johnson <ajohnson@redneon.com> | 2012-01-27 08:53:04 +1030 |
commit | 641526d1a7e8032ea8f7b8ac42c5ad8c20448d9b (patch) | |
tree | 95a179b73e264e8eb777453b84afd45da9037525 | |
parent | f7356a88fe983c2ddd7d5a50400768310a26c4d2 (diff) |
jpeg: set image parameters after jpeg_set_defaults()
so the resolution does not get overwritten by the defaults.
The libjpeg documentation for jpeg_set_defaults() states: "This
routine sets all JPEG parameters to reasonable defaults, using only
the input image's color space (field in_color_space, which must
already be set in cinfo)"
Bug 45224
-rw-r--r-- | goo/JpegWriter.cc | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/goo/JpegWriter.cc b/goo/JpegWriter.cc index 7ed5d524..aa11d8a3 100644 --- a/goo/JpegWriter.cc +++ b/goo/JpegWriter.cc @@ -53,6 +53,10 @@ bool JpegWriter::init(FILE *f, int width, int height, int hDPI, int vDPI) // Initialize libjpeg jpeg_create_compress(&cinfo); + // Set colorspace and initialise defaults + cinfo.in_color_space = colorMode; /* colorspace of input image */ + jpeg_set_defaults(&cinfo); + // Set destination file jpeg_stdio_dest(&cinfo, f); @@ -62,7 +66,6 @@ bool JpegWriter::init(FILE *f, int width, int height, int hDPI, int vDPI) cinfo.density_unit = 1; // dots per inch cinfo.X_density = hDPI; cinfo.Y_density = vDPI; - cinfo.in_color_space = colorMode; /* colorspace of input image */ /* # of color components per pixel */ switch (colorMode) { case JCS_GRAYSCALE: @@ -77,7 +80,6 @@ bool JpegWriter::init(FILE *f, int width, int height, int hDPI, int vDPI) default: return false; } - jpeg_set_defaults(&cinfo); if (cinfo.in_color_space == JCS_CMYK) { jpeg_set_colorspace(&cinfo, JCS_YCCK); cinfo.write_JFIF_header = TRUE; |