imagemagick按目录转换文件

时间:2013-03-10 16:47:06

标签: linux imagemagick

我写了这个简单的shell脚本来使用imagemagik转换jpgs。它工作正常,但我想包括pngs,gifs,jpeg等...同时通过脚本为find的每次迭代传递文件扩展名。我更喜欢这种循环查找的方法,这样我就可以更好地报告处理的每个项目,并允许一个更具伸缩性的脚本,为每个进程添加其他大小和转换。 (而不是简单的convert *命令。)。

有什么建议吗?

find cdn/ -name '*.jpg' -print |  sort | 
while read f; 
 do 
 b=$(basename $f .jpg)
 in="${b}.jpg"
 thumb="${b}_150x150.jpg" 
if [ -e $thumb ]; 
then 
 true  
else 
 convert -resize 150 $in $thumb   
fi

done

2 个答案:

答案 0 :(得分:1)

使其更加模块化,调用第二个脚本来处理图像文件。

find /path -type f -print |
while read filename ; do
     sh /path/to/process_image $filename
done

process_image 脚本中,您可以根据文件选择做什么  扩展名或文件类型。该脚本可以根据您的要求调用其他脚本  想要根据图像类型,大小等做。

将问题分解为1)找到文件,2)决定如何处理文件和3)处理文件。使其模块化将把问题分成可以单独处理的部分。

答案 1 :(得分:1)

+1“将问题分解为1”找到文件,2)决定如何处理文件和3)处理文件。使其模块化将把问题分成可以单独处理的部分。“如前所述。这允许更加可扩展的方法来添加更多处理。

这样,您无需通过扩展名传递文件。这是你想要的,通过扩展传递文件?你必须这样做吗?

此外,

  • 使用-iname '*.jpg'代替-name '*.jpg',以便进行不区分大小写的搜索。
  • 在查找中使用更多-iname参数可查找所需的所有其他扩展程序。例如,

    find cdn/ \(-iname '*.jpg' -o -iname '*.jpeg' -o -iname '*.png' -o -iname '*.gif' \) -print

即,您可以在一次通过中找到所需的所有文件,而不是使用查找一遍又一遍来查找不同的扩展文件。