#!/bin/sh #/////////////// Description //////////////////////////// # #pstogif : convert *.ps file to *.gif # # input : first parameter # output : stdout # # reference : http://www.dais.is.tohoku.ac.jp/~kabe/misc/tips.html # # requires : ghostscript (gs) # ppm file support (pnmdepth, ppmtogif) # #////////////////Update Logs///////////////////////////// # # ver.0.01 by AGATASHI 20000426 # :original version # 02 ditto # :pnmdepth -> ppmquant # 03 ditto # :gs option changed. -sDEVICE=ppm -> -sDEVICE=ppmraw # # 0.10 by AGATASHi 20010516 # :--transparent option # 11 by AGATASHI 20010606 # : --dpi option # 12 by AGATASHI 20010607 # : --rotate option # 0.20 by AGATASHI 20010607 # : All options now not need "=" # 21 by AGATASHI 20010618 # : Minor bug fixes # 22 by AGATASHI 20010623 # : Change of usage system # : Dynamic specification of size of working field # : --margin option# # 23 by AGATASHI 20010624 # : --detail_ratio option # 24 by AGATASHI 20010624 # : --usage and --help option #/////////////// Version Number ///////////////////////////// # VERSION_MAJOR="0" VERSION_MINOR="24" # #//////////////// Default Values ///////////////////////////// # DETAIL_DEFAULT=2.0 MARGIN_DEFAULT=10 DPI_DEFAULT=100 ROTATE_DEFAULT=0 X_SIZE_INCH_DEFAULT=12 Y_SIZE_INCH_DEFAULT=12 #//////////////// Usage ///////////////////////////// # usage(){ cat < /dev/null test $? -ne 0 -a $# -gt 1 # process this option? case $1 in --help|--usage) usage; exit ;; --transparent) if [ $? -eq 0 ] ; then TRANSPARENT_OPTION=" -transparent $2" ; shift ; fi shift; ;; --dpi) if [ $? -eq 0 ] ; then DPI=$2; shift ;fi shift; ;; --rotate) if [ $? -eq 0 ] ; then ROTATE_ANGLE=$2; shift ;fi shift; ;; --margin) if [ $? -eq 0 ] ; then MARGIN_WIDTH=$2; shift ;fi shift; ;; --detail_ratio) if [ $? -eq 0 ] ; then DETAIL_RATIO=$2; shift ;fi shift; ;; --*) echo "Unrecognized option : $1" usage exit ;; *) break; ;; esac done if [ $# -ne 2 ] ; then usage exit fi #//////////////////////////////////////////// # # GO # # if [ -f "$1" ] ; then #file names PS_FILE=$1 GIF_FILE=$2 #details (working field dpi setting) REDUCTION_RATIO=`echo $DETAIL_RATIO | awk '{printf("%.3f", 1 / $1) }'` #dpi of working field WORK_DPI=`echo $DETAIL_RATIO $DPI | awk '{printf("%d", $1 * $2) }'` #size of working field in pixels PIX_X_SIZE=`echo $WORK_DPI $X_SIZE_INCH | awk '{printf("%d", $1 * $2) } '` PIX_Y_SIZE=`echo $WORK_DPI $Y_SIZE_INCH | awk '{printf("%d", $1 * $2) } '` # Execute... echo "----------- $COMNAME version ${VERSION_MAJOR}.${VERSION_MINOR} -- ---------" echo " Source : $PS_FILE , Target : $GIF_FILE " rm -f $GIF_FILE if [ $ROTATE_ANGLE -ne 0 ] ; then ROTATE_COMMAND="pnmrotate $ROTATE_ANGLE" else ROTATE_COMMAND="cat" fi if [ $MARGIN_WIDTH -ne 0 ] ; then MARGIN_COMMAND="pnmmargin -white $MARGIN_WIDTH" else MARGIN_COMMAND="cat" fi # # ps --> pnm(ppm) --> gif # TODO: size information will be got from PS file itself # gs -sDEVICE=ppmraw \ -sOutputFile=- \ -g${PIX_X_SIZE}x${PIX_Y_SIZE} \ -r${WORK_DPI} \ -q -dNOPAUSE ${PS_FILE} < /dev/null | \ pnmscale $REDUCTION_RATIO | \ pnmcrop -white | \ ${ROTATE_COMMAND} | \ ${MARGIN_COMMAND} | \ ppmquant 256 | \ ppmtogif -interlace $TRANSPARENT_OPTION - \ > $GIF_FILE else echo Fatal Error : $COMNAME : FILE \"$1\" Not Found exit 1 fi # # EOF # _________________________________________________________________ Archive