我希望能够在不同尺寸的图像边缘覆盖文本。不同尺寸的图像将具有占图像宽度 30% 的黑边。
我有以下 bash 脚本:
#!/bin/bash 命令 -v 转换 >/dev/null 2>&1 || { echo >&2 "我需要转换,但尚未安装。正在中止!";exit 1;} 命令 -v 识别 >/dev/null 2>&1 || { echo >&2“我需要识别,但尚未安装。正在中止!”;exit 1;} 命令 -v bc >/dev/null 2>&1 || { echo >&2 "我需要 bc,但尚未安装。正在中止!";exit 1;} basedir="$(目录名"$(readlink -f"${1}")")" cd“$basedir” echo "请输入您的标题并按 Enter" 阅读标题 如果[-z“$标题”];然后 printf "未选择标题,正在中止!\n" 1号出口 菲 printf "标题是 $caption\n" 如果 [ ! -d“$basedir”/bakups];然后 mkdir -p "$basedir"/bakups 菲 而[ $# -gt 0 ];做 文件=“$1” if [ -s "$file" ];然后 cp -f "$file" 备份 导出图像大小= $(识别格式“%w,%h”“$文件”) 导出 imagewidth=$(echo "$imagesize" | cut -f1 -d",") 导出 imageheight=$(echo "$(echo "$imagesize" | cut -f2 -d",")*0.05" | bc) 转换-背景“#0008”-字体/usr/share/fonts/truetype/fonts-georgewilliams/CaslonRoman.ttf-pointsize 80-填充白色-重力东\ -size $(echo $imagewidth)x$(echo $imageheight) 标题:"$caption" \ "$file" +swap -gravity east -composite "$file" && \ printf "\n$文件加水印成功\n" 菲 转移 完毕
它给了我这个结果:
文本延伸超过黑边。
我希望文本保留在边距内,并且希望删除文本后面的阴影水平条。
我可以调整 bash 脚本并更改点大小,以便文本保持在边距内,但我希望自动完成此操作,而无需针对不同尺寸的图像调整 bash 脚本。
我希望文本/边距位置如下例所示:
答案1
我不是 imagemagick 专家,但我发现首先创建黑色部分更容易,使用caption:
它可以为您进行文本换行。然后添加汽车的图片(没有黑色部分)。我希望这足以让您朝着所需的解决方案迈进。
首先,我手动将图片单独裁剪为汽车,3WL51.jpg
尺寸为 1650x1232,并使用 500x1232 作为所需的附加黑色部分。
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