Imagemagick 在不同尺寸的图像上放置文本

Imagemagick 在不同尺寸的图像上放置文本

我希望能够在不同尺寸的图像边缘覆盖文本。不同尺寸的图像将具有占图像宽度 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

有标题的汽车

相关内容