用ImageMagick为数码照片加上中文注释

Sun Ge, sun_ge@yahoo.cn

$Id: add-zh-comment.sgml,v 1.2 2003/12/07 14:41:28 sunge Exp sunge $


本文描述了如何使用ImageMagick在数码照片上加上注释,包括汉字注释和拍摄时间信息。

1. 安装freetype和ImageMagick

  1. 编译和安装freetype-2.0.9,我在configure里使用了"--disable-nls"。
  2. 编译和安装ImageMagick-5.5.3

2. 在照片上写上中文注解

  1. 取得一个UTF-8编码的ttf字体,在我的蓝点2.0中装有zhttfonts-1.0-1BP, 所以我使用了其中一个字体:gkai00mp.ttf。 至于windows中的中文ttf字体,使用的是GBK编码,测试不成功。
  2. 我的控制台使用的是GB2312,于是使用以下指令:
    $convert -font /usr/share/zhfont/TTF/gkai00mp.ttf \
    -fill white -pointsize 24 \
    -draw 'text 10,20 "'"`echo 我的照片|iconv -f GB2312 -t UTF-8`"'"' \
    mypic.jpg mypic-with-comment.jpg
    
    这里使用iconv转换编码。
  3. 如果要加上繁体字(GB控制台):
    $convert -font /usr/share/zhfont/TTF/bkai00mp.ttf \
    -fill white -pointsize 24 \
    -draw 'text 10,20 "'"`echo 这是我的照片|autogb -i gb -o big5|iconv -f BIG5 -t UTF-8`"'"' \
    mypic.jpg mypic-with-comment.jpg
    
    因为iconv转换效果很糟,这里使用autogb(源自autoconvert-0.3.13)将GB2312转换为BIG5。

3. 在照片上加上拍摄时间

下面的命令从照片文件中取得EXIF信息,写到照片上:

$convert -font /usr/share/zhfont/TTF/gkai00mp.ttf \
-fill white -pointsize 15 \
-draw 'text 10,20 "'"`echo 我的照片 拍摄于|iconv -f GB2312 -t UTF-8`%[EXIF:DateTime]"'"' \
mypic.jpg mypic-with-comment.jpg

4. 关于字体

windows里有许多ttf字体,Ssdigits.ttf字体有液晶数字效果,用来显示时间很有趣, 而comic.ttf字体看起来很活泼。

Added comment in 2005-11-03:
I have upgraded the system to Fedora Core 3.
在照片上写字时注意: 一定要用引号把汉字包起来.
i.e. UTF8编码控制台:

$convert -fill blue  -pointsize 24 -font /usr/share/fonts/zh_CN/TrueType/gkai00mp.ttf \
-draw "text 100,100 "'"一定要用引号包裹汉字!"' /media/usbdisk/dcim/100nikon/dscn0562.jpg \
picture-with-comment.jpg