Отбрасывание теней с помощью CarrierWave - PullRequest
1 голос
/ 06 июля 2011

Я воскрешаю вопрос, который был уже задан , но не имеет фактического ответа.

Я хотел бы автоматически добавлять простые тени на изображения, которые я загружаю с помощью CarrierWave. Для меня не имеет значения, происходит ли манипулирование изображениями с помощью RMagick или MiniMagick.

Типами входных файлов должны быть значения по умолчанию «белого списка» CarrierWave - jpg, jpeg, png и gif. Тип сохраненного файла должен быть png (обязательно, я думаю).

Спасибо

1 Ответ

2 голосов
/ 07 июля 2011

ОК, разобрался. Может быть, кто-то найдет это полезным.

Внутри моего загрузчика CarrierWave соответствующие биты:

include CarrierWave::RMagick

process :shadow

def shadow
  manipulate! do |img|
    layers = Magick::ImageList.new
    image = Magick::Image.read(img.filename).first
    shadow = image.clone
    shadow = shadow.shadow(0, 0, 4.0, 0.5)
    shadow = shadow.colorize(1.0, 1.0, 1.0, 'gray25')
    layers << shadow << image
    result = layers.optimize_layers(Magick::MergeLayer)
  end
end

Ключом к тому, чтобы заставить RMagick работать, был метод optimize_layers.

...