一个 bash 脚本可以将长文本列的高图像摆成正方形?

一个 bash 脚本可以将长文本列的高图像摆成正方形?

见过长讨论帖的打印版吗?看起来像摩天大楼的图片……里面只有大楼!所以我通常会这样做——手动!— 将图像分解为多个片段,然后使用此脚本使用 imagemagick 将它们并排堆叠:

for f in "$@"
do 
   h=($(sips -g pixelHeight "$f" | grep -o '[0-9]*$'))
   if [[ $h -gt $height ]]; then 
      height=$h
   fi
done
convert +append "$@" -geometry x$height ~/Desktop/Hcombined.png

我如何扩展它以独立完成整个事情?

答案1

获得目标纵横比的一种方法是使用从默认矩形输出开始的循环,测试纵横比,调整列高,分割,然后再次组合,然后返回测试纵横比...... 在此输入图像描述

答案2

邓尼特(我认为):

for f in "$@"
do
    size=($(sips -g pixelWidth -g pixelHeight "$f" | grep -o '[0-9]*$'))
    n=$(echo "scale=3;sqrt(${size[1]}/${size[0]})" | bc)
    convert -crop 1x$n@ +repage "$f" "${f%.*}_%d.${f##*.}"
    convert +append "${f%.*}_*.${f##*.}" "${f%.*}_sq.${f##*.}"
    rm "${f%.*}_"*
done

相关内容