2016-09-29 9 views
2

Iは特定の座標で矩形と、このようなイメージを持っている:ImageMagickの四角形内のテキストに最も適していますか?

image

(illustratory目的のために、私はそこに矩形とその大きさと中心の座標を置く)

ImageMagickでテキストをレンダリングしたいので、が矩形に正確に収まるようにします。

、それは非常に短い(狭い)文字列だ場合は、四角形の高さが制限要因になります。長い(ワイド)文字列、長方形の幅で一方

short string

いずれの場合においても

long string

、独立してO:サイズを決定しますテキストの長さや長さ、1行で印刷したいのですが単語の折り返しや複数行なし)、それが矩形に正確に収まるようにして、が中心のであることを確認します(テキストの中心が矩形の中心にあります)。

マイquestons:

  1. ImageMagickを持つこの「ベストフィット」機能を実行するためにどのように(私は動的に、このために必要な-pointsizeを決定する方法がわからない)

  2. 取得する方法テキスト中心の場合、-gravity centerを使用すると、イメージ全体のテキストの位置に適用されるようです。つまり、テキスト座標はイメージの中心全体に相対的になります。しかし、私は正確な(絶対)座標を指定したい、そしてそれはテキストの中心でなければなりません。例えば

私はこれを行う場合、:

convert test.jpg -font Arial -fill yellow \ 
-pointsize 65 -draw "text 398,90 'Hello'" test2.jpg 

を私が取得しています:私は(矩形の中央)を指定する座標はになるか

wrong

注意を左下テキストのアンカーポイント!

を(これは私を驚かせた)そして、私がしなければ:

convert test.jpg -font Arial -fill yellow \ 
-pointsize 65 -gravity center -draw "text 148,-94 'Hello'" test3.jpg 

を私が取得:

ちょっとOKですが、奇妙なテキストは、私が取得するために使用する必要が座標に注意してください

ok-ish

それ。そして、私は自動的にpointsizeを計算する方法を知りませんでした(試行錯誤で上記を行いました)。

答えて

4

は、私が今集まっているものとの回答

を更新し、私はこれはあなたの最良の選択肢かもしれないと思います。

convert sea.jpg \(-size 173x50 -background none label:"A" -trim -gravity center -extent 173x50 \) -gravity northwest -geometry +312+66 -composite result.png 

enter image description here

そして、この:基本的に、私はテキストを生成するために括弧内を "脇処理" し、その後にそれを合成するいくつかを使用しています

convert sea.jpg \(-size 173x50 -background none label:"A very much longer label" -trim -gravity center -extent 173x50 \) -gravity northwest -geometry +312+66 -composite result.png 

enter image description here

その後のページ。私はlabel:のテキストを最適な自動サイズに生成し、テキストの余分なスペースを取り除きます。次に、テキストボックスが常に同じサイズになるように、-gravity centerを使用してトリミングされたテキストを中央に配置し、背景を展開します(を使用)。 -gravityNorthWestをリセットしてください。あなたはImageMagickのは、与えられたボックスにテキストに合わせて最善を尽くしたい場合

オリジナル回答

、あなたはcaptionいうよりannotatelabelまたは-draw "text"を使用する必要があります。

だから、あなたは海のイメージをロードするには、キャプションのサイズを設定し、正しいスポットの画像上に-geometryを使用してキャプションと複合体を描く:

convert sea.jpg -size 173x50! caption:"Your text" -geometry +312+66 -composite result.png 

enter image description here

あるいは、

convert sea.jpg -size 173x50! caption:"A considerably longer text that will result in a smaller font being chosen" -geometry +312+66 -composite result.png 

enter image description here

:長いテキスト付き

あなたは空白の背景をしたい場合は、あなたのテキストを中央揃えにしたい場合は、このように、Pangoのでそれを行うことができますcaption:

convert sea.jpg -size 173x50! -background none caption:"Your text" -geometry +312+66 -composite result.png 

enter image description here


-background noneを使用するが、しかし、私はあなたが自動サイジング機能を放棄すると信じています:

convert sea.jpg -size 173x50! -background none -gravity center pango:'<span foreground="yellow">ABC</span>' -gravity northwest -geometry +312+66 -composite result.png 

enter image description here

+0

ありがとうございました。私は自動サイズ調整の 'caption'コマンドを認識しませんでした。それでもなおいくつかの質問があります。テキストは左揃えです([非常に短い文字列](http://i.imgur.com/vzw1zuN.png)を使用した場合は特に表示されます)。また、透明に合成することで、テキスト自体のみが表示され、背景は変更されませんか?テキストのラップアラウンドを避けることができます。つまり、すべてを1行にすることはできますか?ああ、最終的に、ちょうど不思議で、何が!サイズのparamでは? ( '-size 173x50!'で) – RocketNuts

+0

感嘆符は、私が特に正確にそのサイズを望むことを意味します。私は** ImageMagick **が物を丸めたり、インテリジェントに管理したりしないことを意味します。 。 –

+0

実際には、 '-caption'コマンドの前に' -background transparent-fill yellow 'を挿入して透過合成を行っています(edit - aha、background noneも同様にOK)。しかし、テキストが完全に四角形に収まらないようですが、上下に未使用のスペースがありますか? – RocketNuts

関連する問題