From 1fd361a1ea06e44286c213ca1f814f49306fdc43 Mon Sep 17 00:00:00 2001 From: giraffedata Date: Sat, 19 Aug 2006 03:12:28 +0000 Subject: Create Subversion repository git-svn-id: http://svn.code.sf.net/p/netpbm/code/trunk@1 9d0c8265-081b-0410-96cb-a4ca84ce46f8 --- editor/ppmquantall.csh | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 editor/ppmquantall.csh (limited to 'editor/ppmquantall.csh') diff --git a/editor/ppmquantall.csh b/editor/ppmquantall.csh new file mode 100644 index 00000000..9a89bca0 --- /dev/null +++ b/editor/ppmquantall.csh @@ -0,0 +1,57 @@ +#!/bin/csh -f +# +# ppmquantall - run ppmquant on a bunch of files all at once, so they share +# a common colormap +# +# WARNING: overwrites the source files with the results!!! +# +# Verbose explanation: Let's say you've got a dozen pixmaps that you want +# to display on the screen all at the same time. Your screen can only +# display 256 different colors, but the pixmaps have a total of a thousand +# or so different colors. For a single pixmap you solve this problem with +# ppmquant; this script solves it for multiple pixmaps. All it does is +# concatenate them together into one big pixmap, run ppmquant on that, and +# then split it up into little pixmaps again. + +if ( $#argv < 3 ) then + echo "usage: ppmquantall ..." + exit 1 +endif + +set newcolors=$argv[1] +set files=( $argv[2-] ) + +# Extract the width and height of each of the images. +# Here, we make the assumption that the width and height are on the +# second line, even though the PPM format doesn't require that. +# To be robust, we need to use Pnmfile to get that information, or +# Put this program in C and use ppm_readppminit(). + +set widths=() +set heights=() +foreach i ( $files ) + set widths=( $widths `sed '1d; s/ .*//; 2q' $i` ) + set heights=( $heights `sed '1d; s/.* //; 2q' $i` ) +end + +set all=/tmp/pqa.all.$$ +rm -f $all +pnmcat -topbottom -jleft -white $files | ppmquant -quiet $newcolors > $all +if ( $status != 0 ) exit $status + +@ y = 0 +@ i = 1 +while ( $i <= $#files ) + pnmcut -left 0 -top $y -width $widths[$i] -height $heights[$i] $all \ + > $files[$i] + if ( $status != 0 ) exit $status + @ y = $y + $heights[$i] + @ i++ +end + +rm -f $all + + + + + -- cgit 1.4.1