summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2017-10-10 23:05:54 +0100
committerCarl Hetherington <cth@carlh.net>2017-10-10 23:05:54 +0100
commit9b8986a69184dbe8f1f7e2e7d2e96e34321cbee3 (patch)
tree3d8f9b116114c49b338c8e79188a66c234a6fd7e /src/lib
parent0116c2315462ddb7456c472bc26346e61d22a3de (diff)
Horrid hack to fix loading of sRGB TIFF, for example; may break log/lin DPX again.
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/magick_image_proxy.cc10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/lib/magick_image_proxy.cc b/src/lib/magick_image_proxy.cc
index fbb08b7b0..e6733c7de 100644
--- a/src/lib/magick_image_proxy.cc
+++ b/src/lib/magick_image_proxy.cc
@@ -103,9 +103,13 @@ MagickImageProxy::image (optional<dcp::NoteHandler>, optional<dcp::Size>) const
}
unsigned char const * data = static_cast<unsigned char const *>(_blob.data());
- if (data[801] == 1) {
- /* The transfer characteristic in this file is "printing density"; in this case ImageMagick sets the colour space
- to LogColorspace. Empirically we find that if we subsequently call colorSpace(Magick::RGBColorspace) the colours
+ if (data[801] == 1 || magick_image->image()->colorspace == Magick::sRGBColorspace) {
+ /* Either:
+ 1. The transfer characteristic in this file is "printing density"; in this case ImageMagick sets the colour space
+ to LogColorspace, or
+ 2. The file is sRGB.
+
+ Empirically we find that in these cases if we subsequently call colorSpace(Magick::RGBColorspace) the colours
are very wrong. To prevent this, set the image colour space to RGB to stop the ::colorSpace call below doing
anything. See #1123 and others.
*/