gpt4 book ai didi

linux - 多个子目录下的原图如何批量制作缩略图?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:58:45 24 4
gpt4 key购买 nike

我将原始图像放在如下所示的目录结构中:

./Alabama/1.jpg
./Alabama/2.jpg
./Alabama/3.jpg
./Alaska/1.jpg
...the rest of the states...

我想将所有原始图像转换为缩略图,以便在网站上显示它们。经过一些挖掘/试验后,我想到了以下 Linux 命令:

find . -type f -iname '*.jpg' | sed -e 's/\.jpg$//' | xargs -I Y convert Y.jpg -thumbnail x100\> Y-small.jpg

它递归地找到我的子目录中的所有 jpg 图像,从中删除文件类型 (.jpg),以便我以后可以重命名它们,然后将它们制作成缩略图并重命名,并在文件类型前附加“-small” .

它对我的目的有用,但它有点复杂而且不是很健壮。例如,我不确定如何在文件名的开头插入“small-”(所以 ./Alabama/small-1.jpg)。

问题:

  1. 是否有更好、更可靠的方法来从位于多个子目录中的图像创建缩略图?
  2. 我能否使现有命令更健壮(例如,但在保存之前使用 sed 重命名输出的缩略图 - 基本上修改 Y-small.jpg 部分)。

最佳答案

无需构建如此复杂的结构。先做小块,再连接。

我决定在文件名中间插入-small。它使一切变得更加复杂。最好使用前缀(更简单的代码,也更容易从 thumb 派生原始文件名),它可以是 thumbsDir/thumbsPrefix-

#!/bin/sh

make_thumbnail() {
pic=$1
thumb=$(dirname "$1")/thumb-$(basename "$1")
convert "$pic" -thumbnail x100 "$thumb"
}

# Now we need a way to call make_thumbnail on each file.
# The easiest robust way is to restrict on files at level 2, and glob those
# with */*.jpg
# (we could also glob levels 2 and 3 with two globs: */*.jpg */*/*.jpg)

for pic in */*.jpg
do
make_thumbnail "$pic"
done

关于linux - 多个子目录下的原图如何批量制作缩略图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11265607/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com