我有一堆图片要打印出来,但为了正确打印出来,其他每张图片都需要水平翻转。现在,图片都是png文件,并标记为"Foo 001.png"
,"Foo 002.png"
。我在想我需要做的就是查看字符串中具有数字的部分,将其转换为整数,n%2==0
检查它是否是偶数,如果它是偶数,则翻转它。
我不知道是否有一种方便的方法可以使用 bash 从字符串转换为整数,或者我会用什么来翻转图片。
使用切换变量翻转列表中的其他图像。
X=0
cat filenames | while read -r filename ; do
if [ $X -eq 1 ] ; then
# flip $filename
fi
# print $filename
X=$((1-$X))
done
您可以将上述cat filenames
替换为ls -1 *.jpg
以按字母顺序打印*.jpg
文件,或者ls -1v
对它们进行版本排序,这种方式不需要文件名中的序列号为零填充。
如果有数千个文件,则可以使用 ls
(无通配符)和 grep
的组合或find
和 sort
之一来代替上述文件,以避免突破ARG_MAX
限制。
由于 bash 用字符串比用数字好得多,我的第一个想法是
flip Foo *{0,2,4,6,8}.png
其中flip
是你用来翻转图片的任何命令。
这假定该命令可以接受多个文件名。如果没有,您可以使用循环:
for f in Foo *{0,2,4,6,8}.png; do flip "$f"; done
如果我理解得很好,你想翻转 1/2 png 图像吗?如果是,则:
convert -flip "Foo *{0,2,4,6,8,10}.png"
或者如果你有太多的文件:
# making an array of files
files=( *.png )
# C style for loop (iterating 2 by 2)
for ((i=0; i< ${#files[@]}; i+=2)) {
# fliping the image
convert -flip "${files[i]}"
}
转换命令是众所周知的ImageMagick库的一部分。