使用带有一些填充的imagemagick为图像的顶部和底部添加字幕

时间:2016-09-20 13:47:16

标签: bash imagemagick imagemagick-convert

我正在尝试自动在图像上写引号。我正在编写的脚本选择一个随机背景并在顶部附加一个引号,并在该引号的底部放置较小的一些填充。

唯一的问题是,我无法让文字正常工作。我正在尝试将居中文本写入顶部的框,然后是底部文本居中的标题,两侧之间有一些填充。我怎样才能做到这一点?

这是我得到的: Bad image

这就是我希望通过填充这些框来排列文本的方式:(注意我不想绘制框,只是说明文本应该在哪里) enter image description here

我的代码:

#!/bin/bash

# Get the text
text="This is text that will occupy until a certain space. This will be long on here."

bottom="By Michael A. Leonetti"

echo $text

bgs="bgs"

image="${bgs}/$( ls "${bgs}" | sort -R | tail -$N | head -1 )"

echo "Using background image ${image}"

width=1024
height=768

usable_percent="0.95"
bottom_percent="0.1"
padding_percent="0.05"

usable_width=$( echo "${width}*${usable_percent}"|bc )
usable_height=$( echo "${height}*${usable_percent}"|bc )

bottom_height=$( echo "${bottom_percent}*${usable_height}"|bc )
padding_height=$( echo "${padding_percent}*${usable_height}"|bc )

text_width=$usable_width
text_height=$( echo "${usable_height}-${bottom_height}-${padding_height}"|bc )

convert \
    \( \
    -size "${text_width}x${text_height}" \
    -background none \
    -fill white \
    -gravity north \
    caption:"${text}" \
    -size "${text_width}x${bottom_height}" \
    -background none \
    -fill white \
    -gravity south \
    caption:"${bottom}" \
    \) \
    -composite \
    \( \
    "${image}" \
    -resize "${width}x${height}^" \
    -gravity center \
    -crop "${width}x${height}+0+0" \
    -brightness-contrast -30x0 \
    \) \
    +swap \
    -gravity south \
    -composite \
    +repage \
    "${bottom}.png"

0 个答案:

没有答案