Это в основном из соображений безопасности. Намного более трудно защитить систему, если Вы не можете положить, что Ваши строки устойчивы к внешним воздействиям.
Спасибо, Пекка, ты дал мне ответ (+1).
У вас должен быть скомпилирован ImageMagick с установленной Маленькой системой управления цветом (LCMS) . Это может быть уже так, если использовался установщик или пакет. Но я собирал из исходников. Это было так же просто, как установка LCMS из исходных текстов и перекомпоновка ImageMagick ( ./ configure; make; make install
).
В ImageMagick для точного воспроизведения цвета хорошо работает следующее:
convert FILENAME -profile /PATH_TO_PROFILE/sRGB.icm OUT.jpg
Итак, в RMagick я использую следующее:
if @image.colorspace == Magick::CMYKColorspace
# Adjust the path as necessary
@image.color_profile ="/usr/local/share/ImageMagick-6.5.4/config/sRGB.icm"
end
@image.write("out.jpg") { self.quality = 85 }
Входящие файлы в данном случае иметь профиль. Я буду исследовать еще немного. Я потерялся с цветом профили (например, где я могу скачать их? сайт ICC не сильно помог)
Не только вы запутались; Я тоже. На сайте ImageMagick есть обсуждения, которые, возможно, стоит просмотреть: Здесь Насколько я понял тогда, правильная работа с профилями возможна, когда используемый профиль можно идентифицировать (например, профиль монитора) или встроены в файл (я думаю, это можно сделать, по крайней мере, для TIFF и JPG в Photoshop). Посмотрите, например, это: Здесь . Удачи.
Я обнаружил, что решение командной строки The Who работает прекрасно, но решение RMagick не работает для меня.
Чтобы заставить его работать в RMagick, мне пришлось использовать метод Magick :: Image # add_format, который, согласно документации, позволит вам указать исходный и целевой профиль. Это выглядит так:
if img.colorspace == Magick::CMYKColorspace
img.add_profile(RGB_COLOR_PROFILE)
end