aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/images/SkJPEGImageEncoder.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/images/SkJPEGImageEncoder.cpp')
-rw-r--r--src/images/SkJPEGImageEncoder.cpp17
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) {