Linux-convert图像处理脚本


Linux-Shell-图像处理

处理图片,是我们经常需要操作的,而这在Linux中,可以轻松的使用脚本实现批处理。

Ax 准备

我们需要用到convert命令,它来自 Imagemagick软件包,这个软件包包含大量图像处理工具。需要手动安装,访问官方网站。

Bx 使用

a 格式转换

convert file1 file2

b 图片大小

指定宽高

convert file1 -resize wxh file2

指定缩放比

convert file1 -resize "50%" file2

Cx 图像管理脚本

a 编写脚本

#!/bin/bash

if [ $# -ne 4 -a $# -ne 6 -a $# -ne 8 ];
then
    echo Incorrect number of arguments
    exit 2
fi

while [ $# -ne 0 ];
do

    case $1 in
    -source) shift; source_dir=$1  ; shift ;;
    -scale) shift;   scale=$1      ; shift ;;
    -percent) shift; percent=$1    ; shift ;;
    -dest) shift ;   dest_dir=$1   ; shift ;;
    -ext) shift ;    ext=$1        ; shift ;;
    *) echo Wrong parameters       ; exit 2 ;;
    esac;
done

for img in `echo $source_dir/*` ;
do

    source_file=$img
    if [[ -n $ext ]];
    then
        dest_file=${img%.*}.$ext
    else
        dest_file=$img
    fi

    if [[ -n $dest_dir ]];
    then
        dest_file=${dest_file##*/}
        dest_file="$dest_dir/$dest_file"
    fi
    
    if [[ -n $scale ]];
    then
        PARAM="-resize $scale"
    elif [[ -n $percent ]]; then
        PARAM="-resize $percent%"
    fi
    echo Processing file : $source_file
    convert $source_file $PARAM $dest_file

done

b 使用

怎么使用呢,下面给出几个样例

将某文件夹中全部图片调整到1024像素宽度

./imgmanager.sh -source dir -scale 1024x

将全部图片调整到原来的20%

./imgmanager.sh -source dir -percent 20%

调整到原来的50%且转为jpg文件,并存放至名为light的文件夹中

./imgmanager.sh -source dir -percent 50% -ext jpg -dest light

Dx 生成网页相册脚本

先执行脚本,然后把图片放在zmyer文件夹下,再次执行


#!/bin/bash
 
echo "Creating album"
mkdir -p zmyer
cat << EOF1 > index.html
<html>
<head>
<style>
body
{
width:470px;
margin:auto;
border : 1px dashed grey;
padding : 10px;
}
 
img
{
margin : 5px;
border: 1px solid black;
}
 
</style>
</head>
<body>
<center><h1> #Album title</h1></center>
<p>
EOF1
 
for img in zmyer/*.jpg;
do
convert "$img" -resize "100x" "$img"
echo "<a href=\"$img\"><img src=\"$img\" title=\"$img\"></a>" >> index.html
done
cat << EOF2 >> index.html
</p>
</body>
</html>
EOF2
echo Album generated to index.html

执行效果

我们图片从哪里来呢,网上找?那太麻烦了,一个一个保存,别忘了,我们已经具备基于shell脚本提供的完整自动化体系,每分钟可以爬取互联网上近千张图片,下面就是爬取图片的脚本。

Ex 爬取图片脚本

#!/bin/bash

if [ $# -ne 3 ];
then
echo "使用方法:$0 URL -d 目录"
exit -1
fi

for i in {1..4}
do
  case $1 in
  -d) shift;directory=$1;shift;;
  *) url=${url:-$1};shift;
  esac
done

mkdir -p $directory;
baseurl=$(echo $url | egrep -o "https?://[a-zA-Z.]+")
echo Downloading $url
curl -s $url | egrep -o "<img src=[^>]*>" | sed 's/<img src=\"\([^"]*\).*/\1/g' > /tmp/$$.list

sed -i "s|^/|$baseurl/|" /tmp/$$.list

cd $directory;
while read filename;
do
   echo Downloading $filename
   curl -s -O "$filename"

done < /tmp/$$.list

使用方式

执行效果

我遇到的问题

mkdir: missing operand

查看发现果然不是bash,而是dash

解决方法

sudo dpkg-reconfigure dash ,选择no

现在就是bash了。

如果我们有两个脚本,想对比差异的话,可以使用diff命令

这样就不用一个一个看了。

根据这个理念,我们可以对比网页,比如网页变动,传送门:跟踪网页变动

再结合我们的自动化生成相册的脚本,我们就可以实现全自动了

Fx 参考

[1] 《Linux Shell脚本攻略》第二版 Shantanu Tushar\Sarath Lakshman 著

[2] http://blog.sina.com.cn/s/blog_681e31a20102wc8e.html

[3] https://www.cnblogs.com/wf-linux/p/9488257.html


文章作者: Enomothem
版权声明: 本博客所有文章除特别声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Enomothem !
  目录