Версии:
- Руби 2.2.3
- Рельсы 4.2.4
- мини_магик: 4.2.10
- Несущая 0.10.0
Описание
Я пытаюсь создать водяной маркер для небольшой галереи, используя CarrierWave в качестве загрузчика.
Я хочу, чтобы водяной знак был размером по сравнению с текущим изображением. Поэтому я пытаюсь использовать файл .svg с разной степенью прозрачности и прозрачным фоном.
Я использую водяной знак на основе Carrierwave добавляет водяной знак к обработанным изображениям
require 'mini_magick'
class Watermarker
def initialize(original_path, watermark_path)
@original_path = original_path.to_s
@watermark_path = watermark_path.to_s
end
def watermark!(options = {})
options[:gravity] ||= 'SouthEast'
image = MiniMagick::Image.open(@original_path)
watermark = MiniMagick::Image.open(@watermark_path)
result = image.composite(watermark, 'png') do |c|
c.gravity options[:gravity]
end
result.write @original_path
end
end
И вызывая это как process
из моего загрузчика.
Мои проблемы:
Я не могу заставить водяной маркер вводить изображение с прозрачным фоном. Я играл с:
Но никакого прогресса.
Я не могу правильно настроить размер накладываемого изображения. Существует множество настроек для команды
geometry
, но я застрял.
Любые идеи и помощь были бы замечательными.
svg
или заменить его наrsvg
. Попробуйтеwatermark.resize()
с небольшим размером, затем, если это сработает, попробуйте получить размер исходного изображения и использовать процент от него дляresize()
. - person Mark Setchell   schedule 29.09.2015