#! /bin/sh # # bitmap.sh -- ターゲットをダウンロードしてGIFに変換 # # 0.0: Aug. 16, 2004 by Dai ISHIJIMA # 0.1: Aug. 18, 2004 縦書き版 # 0.2: Aug. 20, 2004 png対応 # 0.3: Aug. 24, 2004 縮小表示 # logfil=dyn/bitmap.log exec >$logfil 2>&1 set -vx date PATH=./bin:$PATH export PATH wget=/usr/local/bin/wget netpbm=/usr/local/netpbm/bin giftopnm=$netpbm/giftopnm pnmtopng=$netpbm/pnmtopng pnmscale=$netpbm/pnmscale ppmtogif=$netpbm/ppmtogif nkf=/usr/local/bin/nkf2 sizelimit=8192 id='000' xy='y' ft='gif' ds='96' dw='48' dh='64' ls='18' fs='16' nl='' hs='NO' # パラメータ受け取り while [ $# -gt 0 ]; do case x"$1" in x-id) shift id="$1" ;; x-x) xy=x ;; x-y) xy=y ;; x-gif) ft=gif ;; x-png) ft=png ;; x-ds) shift ds="$1" ;; x-dw) shift dw="$1" ;; x-dh) shift dh="$1" ;; x-ls) shift ls="$1" ;; x-fs) shift fs="$1" ;; x-nl) nl="-n" ;; x-hs) hs="YES" ;; esac shift done # ログ出力先切り替え logfil=dyn/$id.log exec >$logfil 2>&1 # ファイルはあるか? if [ ! -r dyn/$id.txt ]; then exit 1 fi date # フォントの指定 font=dyn/${xy}${fs}.bdf if [ ! -r $font ]; then exit 2 fi # 古いファイルを消す /bin/rm -f dyn/$id*.gif dyn/$id*.png # ターゲットを短く切り詰める mv dyn/$id.txt dyn/$id.bak cat dyn/$id.bak | $nkf -j -d | $nkf -w | head -c $sizelimit > dyn/$id.txt # tr '\000-\011\013\014\016-\040' '\040' | # tr '\015' '\012' | # tr -s '\012\040' | # head -c 8192 # ユニコード (UTF-8) 化 # 改行 (\n, \012)、復帰 (\r, \012) 以外の制御文字を空白 (" ", \040) に置換 # 復帰を改行に置換 # 連続する改行と空白を一つにまとめる (tr -s) # 先頭から8kバイトだけに切り詰める (head -c) case x"$xy" in xx) dw="$ds" ;; esac # ビットマップ (GIF) 化 utf8gif2 -o dyn/$id -w $dw -h $dh -f $font -l $ls -${xy} ${nl} dyn/$id.txt date # PNGファイル作成 for i in dyn/$id-*.gif ; do case "x-${hs}-${ft}" in x-NO-png) j=`echo $i | sed 's/gif$/png/'` $giftopnm $i | $pnmtopng > $j & ;; x-YES-png) k=`echo $i | sed 's/\.gif$/s.png/'` $giftopnm $i | $pnmscale 0.5 | $pnmtopng > $k & ;; x-YES-gif) s=`echo $i | sed 's/\.gif$/s.gif/'` $giftopnm $i | $pnmscale 0.5 | $ppmtogif > $s & ;; esac done date exit 0