===============
DLSR的照片会比较占空间;
是否想在照片上面叠加一些拍摄参数?
是否想批量处理照片?
基于前人的方法,实验了一下在Linux(ubuntu)下批量处理照片,方法与脚本如下:
===============
首先需要安装一个软件:ImageMagick;
然后新建一个 .sh 文档,放在你的home目录下,添加如下代码;
然后在控制台输入 “sodu chmod +x ???????.sh” 将该.sh可执行化;
再将该 .sh 文件拷贝到 /bin目录下,这样你可以在任何地方用它了 “sudo cp ?????.sh /bin”
OK了,执行的时候,转到存放照片目录下,直接在控制台上执行 ?????.sh,就可以拉,生成的新文件夹下面就是处理后的照片;
PS:
记得把其中的 author='by saga' 换成你自己的名字;
convert -quality 70 $1 Resized-$1,将图像质量存为70%原图的质量,该值可以自己调整;
#!/bin/bash
#for img in `ls *.JPG`; do
#字体设置
result=EXIF_`date +%Y%m%d%H%M%S`
font="/usr/share/fonts/truetype/freefont/FreeSans.ttf" #exif信息字体
drawtxt(){
#-------------------------------------------------
oldifs=$IFS
IFS="
"
exif_info=`exiv2 $1` 2>/dev/null
model=`echo "$exif_info"|grep "model"|awk -F":" '{print $2}'`
exposure=`echo "$exif_info"|grep "Exposure time"|awk -F":" '{print $2}'`
fnumber=`echo "$exif_info"|grep "Aperture " |awk -F":" '{print $2}'`
date=`echo "$exif_info"|grep "timestamp"|awk -F" :" '{print $2}'`
size=`echo "$exif_info"|grep "Image size"|awk -F":" '{print $2}'`
ISO=`echo "$exif_info"|grep "ISO speed"|awk -F":" '{print $2}'`
author='by saga'
px=`echo "$exif_info"|grep "Image size"|awk -F":" '{print $2}'|awk -F "x" '{print $1}'`
py=`echo "$exif_info"|grep "Image size"|awk -F":" '{print $2}'|awk -F "x" '{print $2}'`
focal=`echo "$exif_info"|grep "Focal length"|awk -F":" '{print $2}'`
#init-----------------------------------------------
[ -z "$model" ]&& exit
[ ! -d $result ]&& mkdir -p $result
echo "正在处理$1"
cp $1 $result/$1
cd $result
let "textsize=30+$py/200"
let "mask_y=35+$py/100"
convert -size "${px} x ${mask_y}" xc:"#ffffffc2" mask.png
text=" $model $exposure $fnumber $ISO ISO $focal $size $date $author "
echo $text
textl=`expr length "$text"`
let "textx=50"
#叠加信息文字的X坐标,可以自己改
let "texty=$mask_y-15"
#叠加信息文字的y坐标,这个就差不多了
convert -font $font -fill "#111111" -pointsize $textsize -draw "text $textx,$texty '$text'" mask.png mask.png
composite -gravity South mask.png $1 $1
convert -quality 70 $1 Resized-$1
rm mask.png
rm $1
cd ..
}
if [ $1 ]
then
drawtxt $1
else
for i in *
do
if [ -f "$i" ]
then
drawtxt $i
fi
done
fi
IFS=$oldifs