Методы титров / надписей не работают

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

def self.post_open_ended_response
  image = MiniMagick::Image.open("public/text_response_bg.png")
  image.combine_options do |i|
    i.size "460x"
    i.gravity 'center'
    i.fill 'white'
    i.pointsize '40'
    i.caption 'blahblahblah'
    # i.label "blahblah  fsdfsd fsd fsd fds fsd fds fds"
    # i.composite "public/output.jpg"
 end
 image.write "public/output.jpg"
end

Причина, по которой я хочу использовать заголовок / метку вместо текста, заключается в том, что я прочитал, что imagemagick волшебным образом изменит размер точек для заголовка / метки. Длина моего текста будет меняться, поэтому я не хочу жестко его кодировать.

1 ответ

Для всех, кто может столкнуться с проблемой в будущем - обновите до последней версии (на данный момент 4.2.0). Я был на 4.0.4 и имел проблему:

https://github.com/minimagick/minimagick/issues/191

Обновление - вообще просто используйте аннотирование - все работает. Если вам требуется манипулирование текстом, вы можете сделать это с помощью TextHelpers. В качестве примера для многострочной аннотации я сделал следующее:

def create_og_image
  message = word_wrap('This is a test string. ' + @blog.title, line_width: 30).upcase

  image = MiniMagick::Image.open(@blog.image.path(:open_graph))
  image.combine_options do |c|
    #c.label message
    c.gravity 'NorthWest'
    c.fill 'white'
    c.stroke 'white'
    c.strokewidth '0'
    c.pointsize '70'
    c.interline_spacing '10'
    c.font "AvantGarde-Book"
    #c.size "500x300 label:'#{message}'"
    #c.label message
    c.annotate '+500+318', message

  end

  image.write "/xxx/xxx/xxx/public/test_image/test_output.jpg"
end
Другие вопросы по тегам