#!/bin/tcsh # usage: process-dir # generates high, medium and low res DjVus and JPEGs # from original images in a directory. copies MPEGs # and makes thumbnails. # to destination dir. this replaces make-dir # makes djvu images at scale 1, 1/2 and 1/4 # (generally 1600x1200, 800x600, 640x480). # makes jpeg thumbnails 128x128 set LIVE="echo OK" # find directory of this shell script # and set command paths set bindir=`pwd`/$0:h set mpegfirstframe="$bindir/mpeg-firstframe" set verb=t set srcdir=$1 set dstdir=$2 set jpglqual="-q 75" set jpgmqual="-q 75" set jpghqual="-q 75" set jpgtqual="-q 75" set c44lqual="-slice 75+11+10+10" set c44mqual="-slice 75+11+10+10" set c44hqual="-slice 75+11+10+10" set thumbsize="-xysize 128 128" if ( $verb != "" ) echo srcdir=$srcdir dstdir=$dstdir # turn off stupid error when nothing matches set nonomatch=t # get all source file names pushd $srcdir set allsrc=( * ) # get all movies set allmov=( *.{mpg,MPG,mpeg,MPEG} ) # get all image files in supported formats set allimg=( *.{jpg,JPG,jpeg,JPEG,ppm,PPM,pgm,PGM,tif,TIF,tiff,TIFF,bmp,BMP,png,PNG,djv,DJV,djvu,DJVU} ) popd if ( $verb != "" ) echo allmov=$allmov if ( $verb != "" ) echo allimg=$allimg # process all image files if ( $verb != "" ) echo "processing image files" foreach i ( $allimg ) # test if file exists because of brain-dead globbing if ( -e $srcdir/$i ) then if ( $verb != "" ) echo "$i" # set names of temporary PPM files (high, medium, low and thumb resolutions) set hppm=$i:r.h.ppm set mppm=$i:r.m.ppm set lppm=$i:r.l.ppm set tppm=$i:r.t.ppm # set names of JPEGs set hjpg=$i:r.h.jpg set mjpg=$i:r.m.jpg set ljpg=$i:r.l.jpg set tjpg=$i:r.t.jpg # set names of DjVus set hdjv=$i:r.h.djvu set mdjv=$i:r.m.djvu set ldjv=$i:r.l.djvu # generate ppm temporaries then compress # images whose originals are in JPEG or DjVu # are not decompressed/recompressed but simply copied # (for the highest resolution). switch ( $i:e ) case "jpg": case "JPG": case "jpeg": case "JPEG": djpeg $srcdir/$i >$dstdir/$hppm djpeg -scale 1/2 $srcdir/$i >$dstdir/$mppm pnmscale 0.4 $dstdir/$hppm >$dstdir/$lppm pnmscale $thumbsize $dstdir/$hppm >$dstdir/$tppm cp $srcdir/$i $dstdir/$hjpg cjpeg $jpgmqual $dstdir/$mppm >$dstdir/$mjpg cjpeg $jpglqual $dstdir/$lppm >$dstdir/$ljpg cjpeg $jpgtqual $dstdir/$tppm >$dstdir/$tjpg c44 $c44hqual $dstdir/$hppm $dstdir/$hdjv c44 $c44mqual $dstdir/$mppm $dstdir/$mdjv c44 $c44lqual $dstdir/$lppm $dstdir/$ldjv breaksw case "djv": case "DJV": case "djvu": case "DJVU": ddjvu $srcdir/$i $dstdir/$hppm pnmscale 0.5 $dstdir/$hppm >$dstdir/$mppm pnmscale 0.4 $dstdir/$hppm >$dstdir/$lppm pnmscale $thumbsize $dstdir/$hppm >$dstdir/$tppm cjpeg $jpghqual $dstdir/$hppm >$dstdir/$hjpg cjpeg $jpgmqual $dstdir/$mppm >$dstdir/$mjpg cjpeg $jpglqual $dstdir/$lppm >$dstdir/$ljpg cjpeg $jpgtqual $dstdir/$tppm >$dstdir/$tjpg cp $srcdir/$i $dstdir/$hdjv c44 $c44mqual $dstdir/$mppm $dstdir/$mdjv c44 $c44lqual $dstdir/$lppm $dstdir/$ldjv breaksw default: switch ( $i:e ) case "ppm": case "PPM": case "pgm": case "PGM": if ( $verb != "" ) echo "ppm/pgm file" cp $srcdir/$i $dstdir/$hppm breaksw case "tif": case "TIF": case "tiff": case "TIFF": tifftopnm $srcdir/$i >$dstdir/$hppm breaksw case "bmp": case "BMP": bmptoppm $srcdir/$i >$dstdir/$hppm breaksw case "png": case "PNG": pngtopnm $srcdir/$i >$dstdir/$hppm breaksw endsw pnmscale 0.5 $dstdir/$hppm >$dstdir/$mppm pnmscale 0.4 $dstdir/$hppm >$dstdir/$lppm pnmscale $thumbsize $dstdir/$hppm >$dstdir/$tppm cjpeg $jpghqual $dstdir/$hppm >$dstdir/$hjpg cjpeg $jpgmqual $dstdir/$mppm >$dstdir/$mjpg cjpeg $jpglqual $dstdir/$lppm >$dstdir/$ljpg cjpeg $jpgtqual $dstdir/$tppm >$dstdir/$tjpg c44 $c44hqual $dstdir/$hppm $dstdir/$hdjv c44 $c44mqual $dstdir/$mppm $dstdir/$mdjv c44 $c44lqual $dstdir/$lppm $dstdir/$ldjv breaksw endsw # remove temporary ppms rm -f $dstdir/$hppm $dstdir/$mppm $dstdir/$lppm $dstdir/$tppm # loop over all image files endif end if ( $verb != "" ) echo "done" # copy all movies to dest dir and make thumbnails of first frame if ( $verb != "" ) echo "processing movies" foreach i ( $allmov ) if ( -e $srcdir/$i ) then if ( $verb != "" ) echo "$i" cp $srcdir/$i $dstdir/$i:r.mpg $mpegfirstframe $srcdir/$i $dstdir/$i:r.junk pnmscale $thumbsize $dstdir/$i:r.junk | cjpeg $jpgtqual >$dstdir/$i:r.t.jpg rm -f $dstdir/$i:r.junk endif end if ( $verb != "" ) echo "done" if ( $verb != "" ) echo "making $dstdir/index.html" pushd $dstdir set jpglist=`glob *.h.jpg` if ( $jpglist == "*.h.jpg" ) set jpglist="" set mpglist=`glob *.mpg` if ( $mpglist == "*.h.mpg" ) set mpglist="" $bindir/make-index $jpglist $mpglist >index.html popd