diff options
| author | Carl Hetherington <cth@carlh.net> | 2017-10-10 23:05:54 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2017-10-10 23:05:54 +0100 |
| commit | 9b8986a69184dbe8f1f7e2e7d2e96e34321cbee3 (patch) | |
| tree | 3d8f9b116114c49b338c8e79188a66c234a6fd7e /src/lib | |
| parent | 0116c2315462ddb7456c472bc26346e61d22a3de (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.cc | 10 |
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. */ |
