Bash脚本创build自定义的缩略图

我需要一个bash脚本来获取指定文件夹内的所有图像; 采取他们的决议,如果它是低于最低,然后什么都不做,否则创build一个中等的拇指图像(200×150像素)。

我在Windows中使用Imagemagick。 但在Linux上,我不能使用相同的脚本,所以我需要写一个新的脚本。

这是我到目前为止。

#!/bin/bash for files in /path/to/image/* do TESTFILE=`echo "$files" | sed 's/|/ /g' | xargs file -b | awk '{print $1}'` while read F CHECKSIZE=`file "$TESTFILE" -b | sed 's/ //g' | sed 's/,/ /g' | awk '{print $2}' | sed 's/x/ /g' | awk '{print $1}'` if [ $CHECKSIZE -ge 200 ]; then convert -sample 200x150 "$F" "$F{_thumb}" fi done done 

但是当我运行这个脚本时,它不会给我缩略图,也不会给我任何错误。 我对这些脚本很新。

更新:

我已经拿出了这个剧本,谢谢大家。 但现在我需要一个更多的帮助。 现在我想将新图像存储在图像文件夹内的文件夹中。 例如, / home / image是所有文件所在的位置。 我想要拇指图像存储在/ home / image / thumbs 。 另外我想重命名文件为filename_thumb.jpg ,但与以下脚本的问题是它存储为filename.jpg _thumb

 #!/bin/bash THUMBS_FOLDER=/home/temp/thumbs for file in /home/temp/* do # next line checks the mime-type of the file IMAGE_TYPE=`file --mime-type -b "$file" | awk -F'/' '{print $1}'` if [ x$IMAGE_TYPE = "ximage" ]; then IMAGE_SIZE=`file -b $file | sed 's/ //g' | sed 's/,/ /g' | awk '{print $2}'` WIDTH=`identify -format "%w" "$file"` HEIGHT=`identify -format "%h" "$file"` # If the image width is greater that 200 or the height is greater that 150 a thumb is created if [ $WIDTH -ge 201 ] || [ $HEIGHT -ge 151 ]; then #This line convert the image in a 200 x 150 thumb filename=$(basename "$file") extension="${filename##*.}" filename="${filename%.*}" convert -sample 200x150 "$file" "${THUMBS_FOLDER}/${filename}_thumb.${extension}" fi fi done 

另一种不使用imageinfo的方法:

请记住更改图像路径,在我的情况下我使用一个名为imgs的文件夹在相同的文件夹级别。

将该内容复制到名为create_thumbs.sh的文件中,然后粘贴下一个代码:

 #!/bin/bash THUMBS_FOLDER=/home/image/thumb for file in /home/image/* do # next line checks the mime-type of the file IMAGE_TYPE=`file --mime-type -b "$file" | awk -F'/' '{print $1}'` if [ x$IMAGE_TYPE = "ximage" ]; then IMAGE_SIZE=`file -b $file | sed 's/ //g' | sed 's/,/ /g' | awk '{print $2}'` WIDTH=`echo $IMAGE_SIZE | sed 's/x/ /g' | awk '{print $1}'` HEIGHT=`echo $IMAGE_SIZE | sed 's/x/ /g' | awk '{print $2}'` # If the image width is greater that 200 or the height is greater that 150 a thumb is created if [ $WIDTH -ge 201 ] || [ $HEIGHT -ge 151 ]; then #This line convert the image in a 200 x 150 thumb filename=$(basename "$file") extension="${filename##*.}" filename="${filename%.*}" convert -sample 200x150 "$file" "${THUMBS_FOLDER}/${filename}_thumb.${extension}" fi fi done 

调用它:

 bash create_thumbs.sh 

这段代码可能更容易理解:

 #!/bin/bash for file in /path/to/images/* do # next line checks the mime-type of the file CHECKTYPE=`file --mime-type -b "$file" | awk -F'/' '{print $1}'` if [ "x$CHECKTYPE" == "ximage" ]; then CHECKSIZE=`stat -f "%z" "$file"` # this returns the filesize CHECKWIDTH=`identify -format "%W" "$file"` # this returns the image width # next 'if' is true if either filesize >= 200000 bytes OR if image width >=201 if [ $CHECKSIZE -ge 200000 ] || [ $CHECKWIDTH -ge 201 ]; then convert -sample 200x150 "$file" "$(dirname "$file")/thumb_$(basename "$file")" fi fi done 

你的脚本稍作改动,安装imageinfo就像你期望的那样。 看下面的解决方案:

安装imageinfo工具(在我的情况下,它已经安装,检查你是否已经有了)

 sudo apt-get install imageinfo 

和脚本:

 #!/bin/bash for file in ./image/* do # next line checks the mime-type of the file IMAGE_TYPE=`file --mime-type -b "$file" | awk -F'/' '{print $1}'` if [ "x$IMAGE_TYPE" == "ximage" ]; then WIDTH=`imageinfo --width "$file"` # obtaining the image width HEIGHT=`imageinfo --height "$file"` # obtaining the image height # If the image width is greater that 200 or the height is greater that 150 a thumb is created if [ $WIDTH -ge 201 ] || [ $HEIGHT -ge 151 ]; then #This line convert the image in a 200 x 150 thumb convert -sample 200x150 "$file" "$(dirname "$file")/thumb_$(basename "$file")" fi fi done