照片/图片我一般都保留三个版本,高分辨率的供存档,中分辨率的供网上共享, 低分辨率的供自己预览。批量处理可以省很多事。

很早以前网上搜到一个Makefile,现在找不到作者了。我修改后的代码如下:

big:
	@for k in p*.jpg; \
		do \
		echo $$k ; \
		name=`echo $$k | cut -f1 -d.`; \
		convert -geometry 1600x1200 $$k Big$${name}.jpg; \
		done
small:
	@for k in p*.jpg; \
		do \
		echo $$k ; \
		name=`echo $$k | cut -f1 -d.`; \
		convert -geometry 640x480 $$k Small$${name}.jpg; \
		done
tiny:
	@for k in p*.jpg; \
		do \
		echo $$k ; \
		name=`echo $$k | cut -f1 -d.`; \
		convert -geometry 480x360 $$k Tiny$${name}.jpg; \
		done

其中文件名通配符*前加了个p,其实没什么必要,只是因为我的相机导出的文件 名都以p开头。

然后把带有以上代码的文件存为Makefile,放到需要批处理照片的同一文件夹, 例如照片在~/image,就把Makefile也放在~/image,然后:

cd ~/image
make big

就会把所有的照片缩小到1600x1200,对我来说用来收藏是足够了。然后把这些 大家伙存到Large文件夹:

mkdir Large
mv Big* Large/

然后中等大小的图片和小图片同理,分别放到Small和Tiny文件夹。最后把原图 都删掉,因为太大占地方:

make small
mkdir Small
mv Small* Small/
make tiny
mkdir Tiny
mv Tiny* Tiny/
rm *.jpg