さまざまなサイズの画像の端にテキストをオーバーレイできるようにしたいです。さまざまなサイズの画像には、画像の幅の30%を占める黒いバーが表示されます。
次のbashスクリプトがあります。
#!/bin/bash command -v Convert>/dev/null 2>&1 || { echo >&2 "変換する必要がありますが、まだインストールされていません。中断中!";exit 1;} command -v recognition>/dev/null 2>&1 || { echo >&2 "識別する必要がありますが、まだインストールされていません。中断中!";exit 1;} Command -v bc >/dev/null 2>&1 || { echo >&2 "bc が必要ですが、まだインストールされていません。中断中!";exit 1;} basedir="$(ディレクトリ名"$(readlink -f"${1}")")" CD "$basedir" echo「タイトルを入力してEnterを押します」 タイトルを読む if [-z "$title"]; printf "タイトルを選択していません。中断します。\n" 1番出口 フィリピン諸島 printf "タイトルは $caption\n です。" もし[! -d "$basedir"/bakups]; mkdir -p "$basedir"/bakups フィリピン諸島 while [ $# -gt 0 ]; ファイル="$1" if [ -s "$file" ]; cp -f "$file" バックアップ エクスポート画像サイズ = $(識別された形式 "%w, %h" "$file") 画像の幅を書き出す=$(echo "$imagesize" | cut -f1 -d",") 画像の高さを書き出す=$(echo "$(echo "$imagesize" | cut -f2 -d",")*0.05" | bc) 変換 -背景 "#0008" -font /usr/share/fonts/truetype/fonts-georgewilliams/CaslonRoman.ttf -pointsize 80 -白塗り -重力東\ -size $(echo $imagewidth)x$(echo $imageheight) title:"$caption" \ "$file" +swap -gravity east -composite "$file" && \ printf "\n$ファイル透かしが正常に追加されました\n" フィリピン諸島 移動する 完璧
それは私に次の結果を与えます:
テキストが黒い枠を超えて拡張されます。
テキストを余白内に保ち、テキストの背後にある影付きの水平バーを削除したいと思います。
テキストが余白内に収まるようにbashスクリプトを調整してポイントサイズを変更できますが、他のサイズの画像に対してbashスクリプトを調整する必要なしにこれを自動的に実行したいと思います。
テキスト/余白位置を以下の例のように表示したいと思います。
答え1
私はimagemagickの専門家ではありませんが、まず黒いセクションを作成し、caption:
それを使用してテキストの折り返しを実行する方が簡単です。次に、黒い部分なしで車の写真を追加します。これがあなたが必要な解決策に向かって進むのに十分であることを願っています。
まず、画像を個別に1650×1232の車に合わせて手動でトリミングし、必要な追加の黒い3WL51.jpg
部分に500×1232を使用しました。
caption="1925 Ford Model A Touring Car
*
Front Engine Rear Wheel Drive"
font=/usr/share/fonts/liberation/LiberationSans-Regular.ttf
file=3WL51.jpg
convert -size 500x1232 -font "$font" \
-pointsize 80 -background "#0008" -fill white \
-gravity center caption:"$caption" \
"$file" +swap +append out.jpg