Я использую Paperclip для обработки всех загрузок файлов в моем проекте. Моя проблема в том, что некоторые файлы являются изображениями, а некоторые изображения используют CMYK в качестве цветового пространства, и это проблема в некоторых браузерах, но особенно для некоторых версий Android (например, Android 4.2 не может обрабатывать jpg с цветовым пространством CMYK)Rails Скрепка скрепки CMYK. Как обнаружить текущее цветовое пространство
I решил, что с помощью convert_options в paperclip и удалите CMYK и добавьте RGB. Мой код выглядит следующим образом:
has_attached_file :media,
:storage => :azure,
:styles => lambda { |a|
if a.instance.is_image?
{
:thumb => {geometry: "75x75#", convert_options: '-strip -colorspace RGB' },
:preview => {geometry: "300x300#",convert_options: '-strip -colorspace RGB' },
:original => {convert_options: '-strip -colorspace RGB'}
}
else ....
Это прекрасно работает, однако при запуске convert_options есть изменение цвета. Итак, я хотел бы запустить convert_options только в том случае, если обнаружил, что текущее цветовое пространство является CMYK и не запускает его, если оно уже RGB, оно ничего не делает для уже изображений RGB, просто изменяет исходные цвета. Я ищу что-то вроде:
has_attached_file :media,
:storage => :azure,
:styles => lambda { |a|
if a.instance.is_image?
if a.instance.colorspace_is?("CMYK")
{
:thumb => {geometry: "75x75#", convert_options: '-strip -colorspace RGB' },
:preview => {geometry: "300x300#",convert_options: '-strip -colorspace RGB' },
:original => {convert_options: '-strip -colorspace RGB'}
else
{
:thumb => "75x75#",
:preview => "300x300#"}
}
end
else ....
Возможно ли это?