diff options
Diffstat (limited to 'src/images/SkJPEGImageEncoder.cpp')
-rw-r--r-- | src/images/SkJPEGImageEncoder.cpp | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/src/images/SkJPEGImageEncoder.cpp b/src/images/SkJPEGImageEncoder.cpp index 845673421c..764e9c43b0 100644 --- a/src/images/SkJPEGImageEncoder.cpp +++ b/src/images/SkJPEGImageEncoder.cpp @@ -82,22 +82,17 @@ static bool set_encode_config(J_COLOR_SPACE* jpegColorType, int* numComponents, } bool SkEncodeImageAsJPEG(SkWStream* stream, const SkPixmap& pixmap, const SkEncodeOptions& opts) { - SkASSERT(!pixmap.colorSpace() || pixmap.colorSpace()->gammaCloseToSRGB() || - pixmap.colorSpace()->gammaIsLinear()); - - SkPixmap src = pixmap; - if (SkTransferFunctionBehavior::kIgnore == opts.fUnpremulBehavior) { - src.setColorSpace(nullptr); - } else { - // kCorrect behavior requires a color space. It's not actually critical in the - // jpeg case (since jpegs are opaque), but Skia color correct behavior generally + if (SkTransferFunctionBehavior::kRespect == opts.fUnpremulBehavior) { + // Respecting the transfer function requries a color space. It's not actually critical + // in the jpeg case (since jpegs are opaque), but Skia color correct behavior generally // requires pixels to be tagged with color spaces. - if (!src.colorSpace()) { + if (!pixmap.colorSpace() || (!pixmap.colorSpace()->gammaCloseToSRGB() && + !pixmap.colorSpace()->gammaIsLinear())) { return false; } } - return SkEncodeImageAsJPEG(stream, src, 100); + return SkEncodeImageAsJPEG(stream, pixmap, 100); } bool SkEncodeImageAsJPEG(SkWStream* stream, const SkPixmap& pixmap, int quality) { |