![创建与图片同名的缩略图](https://linux22.com/image/828090/%E5%88%9B%E5%BB%BA%E4%B8%8E%E5%9B%BE%E7%89%87%E5%90%8C%E5%90%8D%E7%9A%84%E7%BC%A9%E7%95%A5%E5%9B%BE.png)
请注意,这是我的小代码,用于创建保存在名为“图片”的文件夹中的图片的缩略图,并将它们保存在另一个名为“缩略图”的文件夹中。
#!/bin/bash
for i in *.jpg
do
convert -thumbnail 100 $i thumbs/$i
done
但是,该程序没有做两件事:
它不会在缩略图中保留图片的名称。例如,我希望它为
pic.jpg
名为pic.jpg
另外,当我运行该程序时,我不希望它为已经生成缩略图的图片生成缩略图,除非该图片已被修改。
任何帮助都将非常感激。
答案1
ImageMagick 命令行包括
- 一个或多个所需的输入文件名。
- 零个、一个或多个图像设置。
- 零个、一个或多个图像运算符。
- 零个、一个或多个图像序列运算符。
- 零个、一个或多个图像堆栈。
- 零个或一个输出图像文件名(转换、复合、蒙太奇、比较、导入、召唤所需)。
因此,命令前需要有原始图像参数-thumbnail 100
。
如果文件存在则仅运行转换,您需要添加 if 测试。
此外,在 for 循环中您有for i in *.jpg
,但在 convert 命令中您有pictures/$i
。除非我误解了您在做什么,否则它们应该是相同的,就像我在示例脚本中所做的那样。如果您想要图片目录中的 thumbs 目录,请../
从 convert 命令和 if test 中删除该部分。您需要从图片目录运行它,或者如果您不想,您可以将其添加cd pictures
到脚本的开头。
因此,脚本应该是这样的:
#! /bin/bash
for i in *.jpg; do
if [ "$i" -nt "../thumbs/$i" ]; then
convert "$i" -thumbnail 100 "../thumbs/$i";
fi
done;