aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar msarett <msarett@google.com>2016-05-25 10:13:53 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2016-05-25 10:13:53 -0700
commitf34cd632d777e8f8be2ec1f4f3a0c363a7a6214d (patch)
tree2efd5910300c6e4a47c90e39ba6a7c35cc279d48 /src
parentab926f0a1bca1c6e17520803d964a0344b4f79b4 (diff)
Assign sRGB color space to unmarked jpegs and pngs
Diffstat (limited to 'src')
-rw-r--r--src/codec/SkJpegCodec.cpp10
-rw-r--r--src/codec/SkPngCodec.cpp5
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) {