翻转目录中的所有其他图片

  • 本文关键字:其他 翻转 bash
  • 更新时间 :
  • 英文 :


我有一堆图片要打印出来,但为了正确打印出来,其他每张图片都需要水平翻转。现在,图片都是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 的组合或findsort 之一来代替上述文件,以避免突破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库的一部分。

相关内容

  • 没有找到相关文章

最新更新