diff options
author | 2016-05-25 10:13:53 -0700 | |
---|---|---|
committer | 2016-05-25 10:13:53 -0700 | |
commit | f34cd632d777e8f8be2ec1f4f3a0c363a7a6214d (patch) | |
tree | 2efd5910300c6e4a47c90e39ba6a7c35cc279d48 /src/codec | |
parent | ab926f0a1bca1c6e17520803d964a0344b4f79b4 (diff) |
Assign sRGB color space to unmarked jpegs and pngs
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2009813003
Review-Url: https://codereview.chromium.org/2009813003
Diffstat (limited to 'src/codec')
-rw-r--r-- | src/codec/SkJpegCodec.cpp | 10 | ||||
-rw-r--r-- | src/codec/SkPngCodec.cpp | 5 |
2 files changed, 12 insertions, 3 deletions
diff --git a/src/codec/SkJpegCodec.cpp b/src/codec/SkJpegCodec.cpp index 07ece6c95b..5d24694708 100644 --- a/src/codec/SkJpegCodec.cpp +++ b/src/codec/SkJpegCodec.cpp @@ -222,11 +222,15 @@ bool SkJpegCodec::ReadHeader(SkStream* stream, SkCodec** codecOut, Origin orientation = get_exif_orientation(decoderMgr->dinfo()); sk_sp<SkColorSpace> colorSpace = get_icc_profile(decoderMgr->dinfo()); + if (!colorSpace) { + // Treat unmarked jpegs as sRGB. + colorSpace = SkColorSpace::NewNamed(SkColorSpace::kSRGB_Named); + } const int width = decoderMgr->dinfo()->image_width; const int height = decoderMgr->dinfo()->image_height; - *codecOut = new SkJpegCodec(width, height, info, stream, decoderMgr.release(), colorSpace, - orientation); + *codecOut = new SkJpegCodec(width, height, info, stream, decoderMgr.release(), + std::move(colorSpace), orientation); } else { SkASSERT(nullptr != decoderMgrOut); *decoderMgrOut = decoderMgr.release(); @@ -248,7 +252,7 @@ SkCodec* SkJpegCodec::NewFromStream(SkStream* stream) { SkJpegCodec::SkJpegCodec(int width, int height, const SkEncodedInfo& info, SkStream* stream, JpegDecoderMgr* decoderMgr, sk_sp<SkColorSpace> colorSpace, Origin origin) - : INHERITED(width, height, info, stream, colorSpace, origin) + : INHERITED(width, height, info, stream, std::move(colorSpace), origin) , fDecoderMgr(decoderMgr) , fReadyState(decoderMgr->dinfo()->global_state) , fSwizzlerSubset(SkIRect::MakeEmpty()) diff --git a/src/codec/SkPngCodec.cpp b/src/codec/SkPngCodec.cpp index 84d2575225..43d1580c17 100644 --- a/src/codec/SkPngCodec.cpp +++ b/src/codec/SkPngCodec.cpp @@ -608,6 +608,11 @@ static bool read_header(SkStream* stream, SkPngChunkReader* chunkReader, SkCodec if (outCodec) { sk_sp<SkColorSpace> colorSpace = read_color_space(png_ptr, info_ptr); + if (!colorSpace) { + // Treat unmarked pngs as sRGB. + colorSpace = SkColorSpace::NewNamed(SkColorSpace::kSRGB_Named); + } + SkEncodedInfo info = SkEncodedInfo::Make(color, alpha, 8); if (1 == numberPasses) { |