JPG sub sampling setting
see issue 1502
This commit is contained in:
@@ -610,7 +610,8 @@ int ImageIO::savePNG (Glib::ustring fname, int compression, volatile int bps) {
|
||||
}
|
||||
|
||||
|
||||
int ImageIO::saveJPEG (Glib::ustring fname, int quality) {
|
||||
// Quality 0..100, subsampling: 1=low quality, 2=medium, 3=high
|
||||
int ImageIO::saveJPEG (Glib::ustring fname, int quality, int subSamp) {
|
||||
|
||||
jpeg_compress_struct cinfo;
|
||||
jpeg_error_mgr jerr;
|
||||
@@ -650,6 +651,20 @@ int ImageIO::saveJPEG (Glib::ustring fname, int quality) {
|
||||
if (quality>=0 && quality<=100)
|
||||
jpeg_set_quality (&cinfo, quality, true);
|
||||
|
||||
cinfo.comp_info[1].h_samp_factor=cinfo.comp_info[1].v_samp_factor = 1;
|
||||
cinfo.comp_info[2].h_samp_factor=cinfo.comp_info[2].v_samp_factor = 1;
|
||||
|
||||
if (subSamp==1) {
|
||||
// Best compression, default of the JPEG library: 2x2, 1x1, 1x1 (4:1:1)
|
||||
cinfo.comp_info[0].h_samp_factor=cinfo.comp_info[0].v_samp_factor = 2;
|
||||
} else if (subSamp==2) {
|
||||
// Widely used normal ratio 2x1, 1x1, 1x1 (4:2:2)
|
||||
cinfo.comp_info[0].h_samp_factor = 2; cinfo.comp_info[0].v_samp_factor = 1;
|
||||
} else if (subSamp==3) {
|
||||
// Best quality 1x1 1x1 1x1 (4:4:4)
|
||||
cinfo.comp_info[0].h_samp_factor=cinfo.comp_info[0].v_samp_factor = 1;
|
||||
}
|
||||
|
||||
jpeg_start_compress(&cinfo, TRUE);
|
||||
|
||||
// buffer for exif and iptc markers
|
||||
|
Reference in New Issue
Block a user