Напишите строку с методом подписи, используя MiniMagick

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

Вот мой текущий код:

image = MiniMagick::Image.open('template.jpg')
image.combine_options do |c|
  c.background '#0008'
  c.fill '#666'
  c.gravity 'center'
  c.size '100x50'
  c.caption "Lets write some big string here... zzzzz I hope this work =)"
end
image.write('final.jpg')

Мои ссылки: http://www.imagemagick.org/Usage/annotating/

многострочный текст и фоновое изображение ImageMagick

http://www.imagemagick.org/www/command-line-options.html#caption

Спасибо всем


person daniloisr    schedule 30.07.2012    source источник


Ответы (2)


Я закончил использовать системный вызов, чтобы избавиться от этой проблемы, вот код:

Subexec.run "convert -background '#fff0' \\
  -fill '#003300' \\
  -gravity west \\
  -size 560x180 \\
  -pointsize 19 \\
  -font \'#{font_path}\' \\
  caption:\"#{caption}\" \\
  #{photo_path} \\
  +swap \\
  -gravity NorthWest \\
  -geometry +333+113 \\
  -composite #{photo_path}"
person daniloisr    schedule 09.11.2012

Вам нужно использовать Convert с MiniMagick. И подпись великолепна, потому что она будет обтекаться и подстраиваться в соответствии с размером, если вы не вставите pointsize. Однако синтаксис немного сложен, потому что существует не так много примеров Rails.

file = Paperclip::Tempfile.new(["processed", ".jpg"])

MiniMagick::Tool::Convert.new do |img|
  img.background '#0008'
  img.fill '#666'
  img.gravity 'center'
  img.size '100x50'
  img << "caption: Lets write some big string here... zzzzz I hope this work =)"
  img << file.path
 end

model.picture = file
model.save
file.unlink

Примечание. Вы должны добавить путь к файлу последним

person Michael Wiltbank    schedule 14.04.2020