Методы титров / надписей не работают
Я пытаюсь написать многострочный текст на своем изображении, используя заголовок и / или метку, но он ничего не пишет на изображение.
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