无聊啦,分享个今天写的图片批处理脚本(增加新脚本)
-
- 帖子: 627
- 注册时间: 2008-11-08 18:34
无聊啦,分享个今天写的图片批处理脚本(增加新脚本)
脚本1-
用途:
在图片所在的目录下,
运行此脚本,
自动把符合后缀格式的图片处理为最长边为800(另一边原比例缩放)的某种图片格式(这儿是.jpg)
图片自动生成到当前目录下的target目录下
-------------------------------------------------------------------------
#!/bin/bash
mkdir target
#下面这行用来添加需要处理的图片格式
ls *.jpg *.png *.bmp|while read i;
do
#下面这行用来生成新的文件名,这儿是都转为.jpg格式,可以自己修改(目前只发现某些png转bmp会转成空白图片)
newname=`echo $i|sed 's/\.[^\.]\{1,\}$/.jpg/'`;
#echo $i
#echo $newname;
#下面这样用来处理转换图片 执行此命令需要安装(imagemagic)
convert -scale 800x800 $i ./target/$newname
done
-------------------------------------------------------------------------
改进版1:
用途:
在图片所在的目录下,运行此脚本,
自动把符合后缀格式的图片处理为最长边为800(另一边原比例缩放)的某种图片格式(这儿是.jpg)(对于最长边小于800的图片,只进行格式处理,不进行缩放)
图片自动生成到当前目录下的target目录下
--------------------------------------------------------------------------
#!/bin/bash
mkdir target
for i in *.{jpg,png,bmp}
do
newname=${i%.*}.jpg
convert $i -scale 800x800\> ./target/$newname
done
--------------------------------------------------------------------------
脚本2-
添加英文文字水印脚本
用法:
将此脚本丢在/usr/local/bin下
cd到某个有图片的目录下(假设此目录下有个图叫aaa.jpg)
执行: addmark aaa.jpg http://www.meiyou.com (http://www.meiyou.com 这个随便换,只是中文会成?)
结果:目录下新增一个名为aaa_mark.jpg的图片,该图片左下角打了文字水印www.meiyou.com
addmark
--------------------------------------------------------------------------
#!/bin/bash
convert -background none -fill white -font Bookman-DemiItalic -pointsize 24 label:$2 temptemptemp.png
#north在上且居中
#center在中且居中
#south在下且居中
#west用来修饰在左边 east用来修饰在右边 修饰词在前在后都可以
#组合使用 southwest 在左下角 southeast在右下角
newname=${1%.*}_mark.jpg
composite -compose over -gravity southwest temptemptemp.png $1 $newname
rm temptemptemp.png
--------------------------------------------------------------------------
用途:
在图片所在的目录下,
运行此脚本,
自动把符合后缀格式的图片处理为最长边为800(另一边原比例缩放)的某种图片格式(这儿是.jpg)
图片自动生成到当前目录下的target目录下
-------------------------------------------------------------------------
#!/bin/bash
mkdir target
#下面这行用来添加需要处理的图片格式
ls *.jpg *.png *.bmp|while read i;
do
#下面这行用来生成新的文件名,这儿是都转为.jpg格式,可以自己修改(目前只发现某些png转bmp会转成空白图片)
newname=`echo $i|sed 's/\.[^\.]\{1,\}$/.jpg/'`;
#echo $i
#echo $newname;
#下面这样用来处理转换图片 执行此命令需要安装(imagemagic)
convert -scale 800x800 $i ./target/$newname
done
-------------------------------------------------------------------------
改进版1:
用途:
在图片所在的目录下,运行此脚本,
自动把符合后缀格式的图片处理为最长边为800(另一边原比例缩放)的某种图片格式(这儿是.jpg)(对于最长边小于800的图片,只进行格式处理,不进行缩放)
图片自动生成到当前目录下的target目录下
--------------------------------------------------------------------------
#!/bin/bash
mkdir target
for i in *.{jpg,png,bmp}
do
newname=${i%.*}.jpg
convert $i -scale 800x800\> ./target/$newname
done
--------------------------------------------------------------------------
脚本2-
添加英文文字水印脚本
用法:
将此脚本丢在/usr/local/bin下
cd到某个有图片的目录下(假设此目录下有个图叫aaa.jpg)
执行: addmark aaa.jpg http://www.meiyou.com (http://www.meiyou.com 这个随便换,只是中文会成?)
结果:目录下新增一个名为aaa_mark.jpg的图片,该图片左下角打了文字水印www.meiyou.com
addmark
--------------------------------------------------------------------------
#!/bin/bash
convert -background none -fill white -font Bookman-DemiItalic -pointsize 24 label:$2 temptemptemp.png
#north在上且居中
#center在中且居中
#south在下且居中
#west用来修饰在左边 east用来修饰在右边 修饰词在前在后都可以
#组合使用 southwest 在左下角 southeast在右下角
newname=${1%.*}_mark.jpg
composite -compose over -gravity southwest temptemptemp.png $1 $newname
rm temptemptemp.png
--------------------------------------------------------------------------
上次由 gzbao9999 在 2010-07-09 8:33,总共编辑 4 次。
气血鼓荡,身体发胀,偶飘上头,三时舒畅
-
- 帖子: 18311
- 注册时间: 2008-01-09 22:41
Re: 无聊啦,分享个今天写的图片批处理脚本
哦,convert阿
-
- 帖子: 1453
- 注册时间: 2008-05-24 8:30
-
- 帖子: 627
- 注册时间: 2008-11-08 18:34
Re: 无聊啦,分享个今天写的图片批处理脚本
谢谢楼上指点:
这种方式很赞
这种循环方式在文件名中有空格时会出现问题
这种方式可以避免这种情况
代码: 全选
newname="${i%.*}.jpg"
代码: 全选
for i in *.{jpg,png,bmp};
代码: 全选
ls *.jpg *.png *.bmp|while read i;
气血鼓荡,身体发胀,偶飘上头,三时舒畅
- eexpress
- 帖子: 58428
- 注册时间: 2005-08-14 21:55
- 来自: 长沙
- lgxwqq
- 帖子: 1145
- 注册时间: 2009-12-04 13:29
Re: 无聊啦,分享个今天写的图片批处理脚本
都大牛 

关注和奉献Tianjin Linux User Group的建设,热心参与开源社区,Linux爱好者,python初学者,希望成为一名geek,求交流求指导
我知道发QQ群是不对的。。。可是:Linux天津qq群104029520 73809331,终有一天会没有QQ的。。
Blog:http://www.freetstar.com //欢迎
twitter:https://twitter.com/freetstar
我知道发QQ群是不对的。。。可是:Linux天津qq群104029520 73809331,终有一天会没有QQ的。。
Blog:http://www.freetstar.com //欢迎
twitter:https://twitter.com/freetstar
-
- 帖子: 1453
- 注册时间: 2008-05-24 8:30
Re: 无聊啦,分享个今天写的图片批处理脚本
ls 命令中的 -1 在这里是无害的多余物,因为输出到管道就自然隐含了这个选项。eexpress 写了:避免空格的。最好用 ls -1 xxxx|while read i; do
整行读入
恰恰相反,用 for i in * 这样的格式更能很好的处理带特殊字符的文件,因为这种方式 bash 直接把文件名当然参数交给了最终的程序,中间没经过二道贩子,而用 ls 加管道的方式多经过 ls 这个二道贩子,容易走样。下面的例子本不需要用循环,只是为了对比这两者的差别。以 “bash:/tmp/test$ ”开头的是命令,紧接着的是结果。
代码: 全选
bash:/tmp/test$ touch 'filename with space' $'filename with\nnewline'
bash:/tmp/test$ for f in filename*; do file "$f"; done
filename with
newline: empty
filename with space: empty
bash:/tmp/test$ ls filename* | while read f; do file "$f"; done
filename with: ERROR: cannot open `filename with' (No such file or directory)
newline: ERROR: cannot open `newline' (No such file or directory)
filename with space: empty
bash:/tmp/test$
-
- 帖子: 627
- 注册时间: 2008-11-08 18:34
Re: 无聊啦,分享个今天写的图片批处理脚本
仔细看了下
这个问题的key应该在于
for i in *
for i in `ls -1`
in之后的来源不同会导致不同的结果(就像楼上说的过了ls这个二道贩子)
在直接处理目录下文件时用for i in *确实效果很好
但在处理文本文件时,由于来源的变化,效果又是另一番样子,
cat aa|while read i;do echo $i;done :这个的效果和cat aa是一样的,一行还在一行
for i in `cat aa`;do echo $i;done :这个的效果 则把原一行的字符之间的连续空格当成换行处理
又学习了个命令 file *
这个问题的key应该在于
for i in *
for i in `ls -1`
in之后的来源不同会导致不同的结果(就像楼上说的过了ls这个二道贩子)
在直接处理目录下文件时用for i in *确实效果很好
但在处理文本文件时,由于来源的变化,效果又是另一番样子,
cat aa|while read i;do echo $i;done :这个的效果和cat aa是一样的,一行还在一行
for i in `cat aa`;do echo $i;done :这个的效果 则把原一行的字符之间的连续空格当成换行处理
又学习了个命令 file *

气血鼓荡,身体发胀,偶飘上头,三时舒畅
-
- 帖子: 1453
- 注册时间: 2008-05-24 8:30
Re: 无聊啦,分享个今天写的图片批处理脚本
代码: 全选
for i in `cat aa`;do echo $i;done
不过如果一定要偏爱 for i in `cat aa` 这种用法也不是不可以,先设置 IFS=$'\n' 就可以了,但我认为如此不如用 while。
-
- 帖子: 104
- 注册时间: 2010-01-23 23:24
Re: 无聊啦,分享个今天写的图片批处理脚本(增加新脚本)
MARK下,学习了!
- fox0001
- 帖子: 43
- 注册时间: 2010-10-08 23:22
Re: 无聊啦,分享个今天写的图片批处理脚本(增加新脚本)
好帖,正好有用~
- naturalaw
- 帖子: 1360
- 注册时间: 2011-09-06 22:04
Re: 无聊啦,分享个今天写的图片批处理脚本(增加新脚本)
高手过招就是不一样.谢谢楼上指点:
代码:
newname="${i%.*}.jpg"
这种方式很赞
- 永恒之法则
- The eternal law
-
- 帖子: 6548
- 注册时间: 2008-10-31 22:12
- 系统: 践兔
- 联系: