From 320d5d64e87cfa0b77f40a51c01db02f34e7516f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcus=20R=C3=BCckert?= Date: Mon, 7 Mar 2016 23:26:28 +0100 Subject: [PATCH] Use sRGB Color Profile when converting images With the conversion done when uploading or fetching an image we also lose any embedded color profiles. [This leads to images possibly not rendered properly in the browsers.][1] To fix the issue we tell imagemagick to render the image from the embedded color profile to sRGB, which is the color space used by most browsers. RT_sRGB.icm is taken from the [RawTherapee repository][2] and is licensed as Public Domain. [1]: https://meta.discourse.org/t/image-embedded-color-profile/40519 [2]: https://github.com/Beep6581/RawTherapee/blob/master/rtdata/iccprofiles/output/RT_sRGB.icm --- app/models/optimized_image.rb | 2 ++ vendor/data/RT_sRGB.icm | Bin 0 -> 25572 bytes 2 files changed, 2 insertions(+) create mode 100644 vendor/data/RT_sRGB.icm diff --git a/app/models/optimized_image.rb b/app/models/optimized_image.rb index f316a8d2dfa..590724f21e1 100644 --- a/app/models/optimized_image.rb +++ b/app/models/optimized_image.rb @@ -108,6 +108,7 @@ class OptimizedImage < ActiveRecord::Base -interpolate bicubic -unsharp 2x0.5+0.7+0 -quality 98 + -profile #{File.join(Rails.root, 'vendor', 'data', 'RT_sRGB.icm')} #{to} } end @@ -130,6 +131,7 @@ class OptimizedImage < ActiveRecord::Base -gravity center -background transparent -resize #{dimensions}#{!!opts[:force_aspect_ratio] ? "\\!" : "\\>"} + -profile #{File.join(Rails.root, 'vendor', 'data', 'RT_sRGB.icm')} #{to} } end diff --git a/vendor/data/RT_sRGB.icm b/vendor/data/RT_sRGB.icm new file mode 100644 index 0000000000000000000000000000000000000000..3d0822ef7c1bd141a4c933686e47f258201bd7d4 GIT binary patch literal 25572 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 A0RR91 literal 0 HcmV?d00001