分页: 1 / 2

求批量压缩照片方法 越简单越好

发表于 : 2013-04-29 19:28
linbin95
我有一批照片需要压缩 成640*480分辨率 格式为JPGE
:em06

Re: 求批量压缩照片方法 越简单越好

发表于 : 2013-04-29 19:34
YeLee
convert是不是有个 -resize 的参数来着?

Re: 求批量压缩照片方法 越简单越好

发表于 : 2013-04-29 19:40
eexpress
viewtopic.php?f=63&t=296204&start=42

42楼,带了图片拼图,我经常压缩照片。

Re: 求批量压缩照片方法 越简单越好

发表于 : 2013-04-29 19:48
linbin95
YeLee 写了:convert是不是有个 -resize 的参数来着?
好吧玩用不来 你写个配置呗

Re: 求批量压缩照片方法 越简单越好

发表于 : 2013-04-29 19:56
linbin95
eexpress 写了:viewtopic.php?f=63&t=296204&start=42

42楼,带了图片拼图,我经常压缩照片。
我试试看 不懂再问

Re: 求批量压缩照片方法 越简单越好

发表于 : 2013-04-29 20:00
linbin95
eexpress 写了:viewtopic.php?f=63&t=296204&start=42

42楼,带了图片拼图,我经常压缩照片。
看来下 不是我要的

我只是要吧照片压缩成640*480 JPEG 做资料用

Re: 求批量压缩照片方法 越简单越好

发表于 : 2013-04-29 20:07
eexpress

代码: 全选

● for i in *.jpg; do convert -scale 640 $i $i.jpeg; done

Re: 求批量压缩照片方法 越简单越好

发表于 : 2013-04-29 20:08
YeLee

代码: 全选

find -iname "*.jpg" -exec convert -resize 640x480 {} {}.jpg \;
:em01 :em01 :em01

Re: 求批量压缩照片方法 越简单越好

发表于 : 2013-04-29 20:10
photor
:em09

Re: 求批量压缩照片方法 越简单越好

发表于 : 2013-04-29 20:23
linbin95
YeLee 写了:

代码: 全选

find -iname "*.jpg" -exec convert -resize 640x480 {} {}.jpg \;
:em01 :em01 :em01
哟西 搞定

如果处理后 不需要原图呢

Re: 求批量压缩照片方法 越简单越好

发表于 : 2013-04-29 20:47
YeLee

代码: 全选

find -iname "*.jpg" -exec convert -resize 640x480 {} {} \;
:em01 :em01 :em01

Re: 求批量压缩照片方法 越简单越好

发表于 : 2013-04-29 21:52
tang.zhe
8 楼 :em11

Re: 求批量压缩照片方法 越简单越好

发表于 : 2013-04-30 10:28
Fermat618
eexpress 写了:

代码: 全选

● for i in *.jpg; do convert -scale 640 $i $i.jpeg; done
一旦文件名里面有空格,你这个就悲剧掉了。加双引号可以解决这个问题,但我还是建议别用 shell 为好。花时间去填 shell 里面一个又一个的大坑,不值。能用 shell 把程序写正确的,不是一般人!

Re: 求批量压缩照片方法 越简单越好

发表于 : 2013-04-30 10:33
Fermat618
我推荐 parallel 程序。

代码: 全选

parallel convert -scale 640 {} {.}_640.jpeg ::: *.jpg
这个可以并行,也就是可以利用多核。也没有 shell 变量替换的问题。

Re: 求批量压缩照片方法 越简单越好

发表于 : 2013-04-30 11:26
cao627
Fermat618 写了:
eexpress 写了:

代码: 全选

● for i in *.jpg; do convert -scale 640 $i $i.jpeg; done
一旦文件名里面有空格,你这个就悲剧掉了。加双引号可以解决这个问题,但我还是建议别用 shell 为好。花时间去填 shell 里面一个又一个的大坑,不值。能用 shell 把程序写正确的,不是一般人!

这种带*的情况下,加双引号和不加双引号有很大差别
echo *.jpg #显示当前目录下以jpg结尾的文件
echo “*.jpg” #显示*.jpg
双引号取消*号的文件名扩展,让其成为字面字符。
所以 for i in “*.jpg” i 得到的是*.jpg , 后面$i取到的也永远是*.jpg
find -name “*.jpg” 这个双引号也使*失去了shell文件名扩展功能,但接下去find又将其视为特使字符。所以这个没问题。