Can't fit text to image with ImageMagick

帅比萌擦擦* 提交于 2021-01-28 13:16:26

问题


I need to fit my text to image. My image have different sizes so i can't set constant pointsize.

My command looks something like this

convert 
    -fill white
    -font Winter Calligraphy
    -size `${options.width}x${options.height}`
    label: KJHGFD
    test.gif

on output you can see cropped part on top of picture.

Output:

  • I have problem only with this fonts, other fonts works great.
  • I tried to add white border on top. Unfortunately, this only moved the damaged text to bottom.
  • I can't change area size.
  • Text must fill as much space as possible.
  • I need to use Winter Calligraphy font

回答1:


Here is a slightly kludgy way of getting the result you want. Here are the steps:

  • First, use caption: to get ImageMagick to tell you the pointsize it would use to fill your text box and extract that info

  • Create a canvas twice as wide and twice as tall as the one you really want and draw your text in the middle of that - it is bound to fit!

  • Now trim away the extraneous background around the text so you have the absolute minimum bounding box to contain the text

  • Resize the result to your desired size.


#!/bin/bash

# Width, height and text
w=600
h=150
text="KJHGFD"

# Get pointsize ImageMagick thinks is good
pointsize=$(convert -gravity center -background black -fill white -size ${w}x${h} \
    -font "Winter Calligraphy.ttf" caption:"$text" -format "%[caption:pointsize]" info:)

echo ImageMagick likes pointsize: $pointsize

# So draw text in that size on larger canvas, trim to bounds of letters and resize to desired size
wb=$((w*2))
hb=$((h*2))
convert -gravity center -fill white -size ${wb}x${hb} xc:black \
    -font "Winter Calligraphy.ttf" -pointsize $pointsize -annotate 0 "$text" \
    -trim +repage -resize ${w}x${h}\! result.png




回答2:


This works for me in ImageMagick 6.9.10.97 Q16 Mac OSX. I have added -background white -fill black -gravity center to your command.

convert -background white -fill black -font "/library/fonts/Winter Calligraphy.ttf" -size 569x196 -gravity center label:KJHGFD test.gif




来源:https://stackoverflow.com/questions/60527300/cant-fit-text-to-image-with-imagemagick

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!