Photo saved via queue from the Editor tab looks different to the one saved from the File Browser tab, issue 1471
This commit is contained in:
@@ -369,7 +369,7 @@ LINUX
|
|||||||
liblcms2-dev libpng-dev libsigc++-2.0-dev libtiff-dev mercurial \
|
liblcms2-dev libpng-dev libsigc++-2.0-dev libtiff-dev mercurial \
|
||||||
zlib1g-dev
|
zlib1g-dev
|
||||||
|
|
||||||
in Fedora, run:
|
In Fedora, run:
|
||||||
sudo yum install gcc-c++ cmake bzip2-devel exiv2-devel expat-devel \
|
sudo yum install gcc-c++ cmake bzip2-devel exiv2-devel expat-devel \
|
||||||
fftw-devel glib2-devel glibmm24-devel gtk+-devel gtkmm24-devel \
|
fftw-devel glib2-devel glibmm24-devel gtk+-devel gtkmm24-devel \
|
||||||
libjpeg-turbo-devel lcms2-devel libiptcdata-devel libpng-devel \
|
libjpeg-turbo-devel lcms2-devel libiptcdata-devel libpng-devel \
|
||||||
|
@@ -246,7 +246,7 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall) {
|
|||||||
// if it's just crop we just need the histogram, no image updates
|
// if it's just crop we just need the histogram, no image updates
|
||||||
if ( todo!=CROP ) {
|
if ( todo!=CROP ) {
|
||||||
ipf.rgbProc (oprevi, oprevl, hltonecurve, shtonecurve, tonecurve, shmap, params.toneCurve.saturation,
|
ipf.rgbProc (oprevi, oprevl, hltonecurve, shtonecurve, tonecurve, shmap, params.toneCurve.saturation,
|
||||||
rCurve, gCurve, bCurve);
|
rCurve, gCurve, bCurve, params.toneCurve.expcomp, params.toneCurve.hlcompr, params.toneCurve.hlcomprthresh);
|
||||||
}
|
}
|
||||||
|
|
||||||
// compute L channel histogram
|
// compute L channel histogram
|
||||||
|
@@ -186,9 +186,15 @@ void ImProcFunctions::firstAnalysis (Imagefloat* original, const ProcParams* par
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Process RGB image and convert to LAB space
|
|
||||||
void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, LUTf & hltonecurve, LUTf & shtonecurve, LUTf & tonecurve,
|
void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, LUTf & hltonecurve, LUTf & shtonecurve, LUTf & tonecurve,
|
||||||
SHMap* shmap, int sat, LUTf & rCurve, LUTf & gCurve, LUTf & bCurve) {
|
SHMap* shmap, int sat, LUTf & rCurve, LUTf & gCurve, LUTf & bCurve) {
|
||||||
|
rgbProc (working, lab, hltonecurve, shtonecurve, tonecurve, shmap, sat, rCurve, gCurve, bCurve, params->toneCurve.expcomp, params->toneCurve.hlcompr, params->toneCurve.hlcomprthresh);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Process RGB image and convert to LAB space
|
||||||
|
void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, LUTf & hltonecurve, LUTf & shtonecurve, LUTf & tonecurve,
|
||||||
|
SHMap* shmap, int sat, LUTf & rCurve, LUTf & gCurve, LUTf & bCurve,
|
||||||
|
double expcomp, int hlcompr, int hlcomprthresh) {
|
||||||
|
|
||||||
int h_th, s_th;
|
int h_th, s_th;
|
||||||
if (shmap) {
|
if (shmap) {
|
||||||
@@ -247,9 +253,9 @@ void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, LUTf & hltone
|
|||||||
if (sCurveEnabled) sCurve = new FlatCurve(params->hsvequalizer.scurve);
|
if (sCurveEnabled) sCurve = new FlatCurve(params->hsvequalizer.scurve);
|
||||||
if (vCurveEnabled) vCurve = new FlatCurve(params->hsvequalizer.vcurve);
|
if (vCurveEnabled) vCurve = new FlatCurve(params->hsvequalizer.vcurve);
|
||||||
|
|
||||||
const float exp_scale = pow (2.0, params->toneCurve.expcomp);
|
const float exp_scale = pow (2.0, expcomp);
|
||||||
const float comp = (max(0.0, params->toneCurve.expcomp) + 1.0)*params->toneCurve.hlcompr/100.0;
|
const float comp = (max(0.0, expcomp) + 1.0)*hlcompr/100.0;
|
||||||
const float shoulder = ((65536.0/max(1.0f,exp_scale))*(params->toneCurve.hlcomprthresh/200.0))+0.1;
|
const float shoulder = ((65536.0/max(1.0f,exp_scale))*(hlcomprthresh/200.0))+0.1;
|
||||||
const float hlrange = 65536.0-shoulder;
|
const float hlrange = 65536.0-shoulder;
|
||||||
|
|
||||||
|
|
||||||
|
@@ -118,6 +118,9 @@ class ImProcFunctions {
|
|||||||
void firstAnalysis (Imagefloat* working, const ProcParams* params, LUTu & vhist16, double gamma);
|
void firstAnalysis (Imagefloat* working, const ProcParams* params, LUTu & vhist16, double gamma);
|
||||||
void rgbProc (Imagefloat* working, LabImage* lab, LUTf & hltonecurve, LUTf & shtonecurve, LUTf & tonecurve,
|
void rgbProc (Imagefloat* working, LabImage* lab, LUTf & hltonecurve, LUTf & shtonecurve, LUTf & tonecurve,
|
||||||
SHMap* shmap, int sat, LUTf & rCurve, LUTf & gCurve, LUTf & bCurve);
|
SHMap* shmap, int sat, LUTf & rCurve, LUTf & gCurve, LUTf & bCurve);
|
||||||
|
void rgbProc (Imagefloat* working, LabImage* lab, LUTf & hltonecurve, LUTf & shtonecurve, LUTf & tonecurve,
|
||||||
|
SHMap* shmap, int sat, LUTf & rCurve, LUTf & gCurve, LUTf & bCurve,
|
||||||
|
double expcomp, int hlcompr, int hlcomprthresh);
|
||||||
void luminanceCurve (LabImage* lold, LabImage* lnew, LUTf &curve);
|
void luminanceCurve (LabImage* lold, LabImage* lnew, LUTf &curve);
|
||||||
void chrominanceCurve (LabImage* lold, LabImage* lnew, LUTf &acurve, LUTf &bcurve, LUTf & satcurve);
|
void chrominanceCurve (LabImage* lold, LabImage* lnew, LUTf &acurve, LUTf &bcurve, LUTf & satcurve);
|
||||||
void vibrance (LabImage* lab);//Jacques' vibrance
|
void vibrance (LabImage* lab);//Jacques' vibrance
|
||||||
|
@@ -739,7 +739,7 @@ IImage8* Thumbnail::processImage (const procparams::ProcParams& params, int rhei
|
|||||||
//CurveFactory::complexCurve (expcomp, black/65535.0, params.toneCurve.hlcompr, params.toneCurve.hlcomprthresh,
|
//CurveFactory::complexCurve (expcomp, black/65535.0, params.toneCurve.hlcompr, params.toneCurve.hlcomprthresh,
|
||||||
// params.toneCurve.shcompr, params.toneCurve.brightness, params.toneCurve.contrast,
|
// params.toneCurve.shcompr, params.toneCurve.brightness, params.toneCurve.contrast,
|
||||||
// gamma, true, params.toneCurve.curve, hist16, dummy, curve1, curve2, curve, dummy, 16);
|
// gamma, true, params.toneCurve.curve, hist16, dummy, curve1, curve2, curve, dummy, 16);
|
||||||
CurveFactory::complexCurve (expcomp, black/65535.0, hlcompr, params.toneCurve.hlcomprthresh,
|
CurveFactory::complexCurve (expcomp, black/65535.0, hlcompr, hlcomprthresh,
|
||||||
params.toneCurve.shcompr, bright, contr, gamma, true,
|
params.toneCurve.shcompr, bright, contr, gamma, true,
|
||||||
params.toneCurve.curve, hist16, dummy, curve1, curve2, curve, dummy, 16);
|
params.toneCurve.curve, hist16, dummy, curve1, curve2, curve, dummy, 16);
|
||||||
|
|
||||||
@@ -749,7 +749,7 @@ IImage8* Thumbnail::processImage (const procparams::ProcParams& params, int rhei
|
|||||||
|
|
||||||
LabImage* labView = new LabImage (fw,fh);
|
LabImage* labView = new LabImage (fw,fh);
|
||||||
|
|
||||||
ipf.rgbProc (baseImg, labView, curve1, curve2, curve, shmap, params.toneCurve.saturation, rCurve, gCurve, bCurve );
|
ipf.rgbProc (baseImg, labView, curve1, curve2, curve, shmap, params.toneCurve.saturation, rCurve, gCurve, bCurve, expcomp, hlcompr, hlcomprthresh);
|
||||||
|
|
||||||
if (shmap)
|
if (shmap)
|
||||||
delete shmap;
|
delete shmap;
|
||||||
|
@@ -160,7 +160,7 @@ IImage16* processImage (ProcessingJob* pjob, int& errorCode, ProgressListener* p
|
|||||||
LUTf bCurve (65536,0);
|
LUTf bCurve (65536,0);
|
||||||
LUTu dummy;
|
LUTu dummy;
|
||||||
|
|
||||||
CurveFactory::complexCurve (expcomp, black/65535.0, params.toneCurve.hlcompr, params.toneCurve.hlcomprthresh, params.toneCurve.shcompr, bright, params.toneCurve.contrast, imgsrc->getGamma(), true, params.toneCurve.curve,
|
CurveFactory::complexCurve (expcomp, black/65535.0, hlcompr, hlcomprthresh, params.toneCurve.shcompr, bright, contr, imgsrc->getGamma(), true, params.toneCurve.curve,
|
||||||
hist16, dummy, curve1, curve2, curve, dummy);
|
hist16, dummy, curve1, curve2, curve, dummy);
|
||||||
|
|
||||||
CurveFactory::RGBCurve (params.rgbCurves.rcurve, rCurve, 1);
|
CurveFactory::RGBCurve (params.rgbCurves.rcurve, rCurve, 1);
|
||||||
@@ -169,7 +169,7 @@ IImage16* processImage (ProcessingJob* pjob, int& errorCode, ProgressListener* p
|
|||||||
|
|
||||||
LabImage* labView = new LabImage (fw,fh);
|
LabImage* labView = new LabImage (fw,fh);
|
||||||
|
|
||||||
ipf.rgbProc (baseImg, labView, curve1, curve2, curve, shmap, params.toneCurve.saturation, rCurve, gCurve, bCurve);
|
ipf.rgbProc (baseImg, labView, curve1, curve2, curve, shmap, params.toneCurve.saturation, rCurve, gCurve, bCurve, expcomp, hlcompr, hlcomprthresh);
|
||||||
|
|
||||||
// Freeing baseImg because not used anymore
|
// Freeing baseImg because not used anymore
|
||||||
delete baseImg;
|
delete baseImg;
|
||||||
|
Reference in New Issue
Block a user