RMagick: преобразование CMYK EPS в RGB PNG с сохранением прозрачного фона - PullRequest
4 голосов
/ 26 июля 2011

Я потратил много времени, пытаясь перейти от CMYK EPS к RGB PNG, используя RMagick и Rails.Надеюсь, это кому-нибудь пригодится:

def convert_image_from_cmyk_to_rgb( image )
  #puts image.alpha?
  if image.colorspace == Magick::CMYKColorspace
    image.strip!
    image.add_profile("#{Rails.root}/lib/USWebCoatedSWOP.icc")
    image.colorspace == Magick::SRGBColorspace
    image.add_profile("#{Rails.root}/lib/sRGB.icc")
  end
  image
end

Вы можете загрузить файлы ICC напрямую из Adobe по адресу http://www.adobe.com/support/downloads/iccprofiles/iccprofiles_win.html

Единственное, что я не смог выяснить, это какподдерживать прозрачность.EPS, который я хочу использовать, имеет прозрачный фон, который превращается в белый.К сожалению, я не могу сделать что-то вроде image.transparent( "white" ), так как у меня на изображении белый цвет, который я хочу сохранить белым.

Если я раскомментирую puts image.alpha? в приведенном выше коде, он возвращает false.

Кто-нибудь знает, возможно ли то, что я пытаюсь сделать, с текущей версией RMagick, так как я начинаю задумываться, не поддерживается ли импорт EPS с CMYK с прозрачностью.

Спасибо!

1 Ответ

0 голосов
/ 06 октября 2013

знаете ли вы о команде paint_transparent для RMagick?

image.paint_transparent(color, opacity=TransparentOpacity, invert=false, fuzz=img.fuzz) -> image

Описание Изменяет значение непрозрачности всех пикселей, которые соответствуют цвету, на значение, определенное непрозрачностью.Если значение true для инвертирования, изменяются пиксели, которые не соответствуют цвету.

Аргументы

color Имя цвета илиpixel.

opacity Новое значение непрозрачности, либо значение непрозрачности, либо число от 0 до QuantumRange.По умолчанию используется TransparentOpacity.

инвертировать Если true, изменяет все пиксели, которые не являются целевым цветом.

fuzz По умолчанию пиксель должен точно совпадать, но вы можете указать уровень допуска, передав положительное значение.

Возвращает Новое изображение

Magick API TransparentPaintImage

Вы видели это видео с Railscasts http://railscasts.com/episodes/374-image-manipulation?Он использует логотип GitHub для создания печати с прозрачностью.

...