package com.cosmocode.image.filtering;
import java.io.FileOutputStream;
import com.cosmocode.image.filtering.filters.CropImageFilter;
import com.cosmocode.image.filtering.filters.InvertImageFilter;
import com.cosmocode.image.filtering.filters.RotateImageFilter;
import com.cosmocode.image.filtering.filters.ScaleImageFilter;
/**
*
*/
public class FilterTool {
public static final String cvsID = "$Id: FilterTool.java,v 1.4 2004/02/23 12:22:09 rademacher Exp $";
public static void main( String [] args ) {
if ( args.length < 2 ) {
System.out.println( "\nusage: FilterTool [-q qulity ] [-f outformat] <in-file> <out-file> [filters...]");
System.out.println( "\tquality : 0.0 (low) - 1.0 (high) -> nur fuer JPEG");
System.out.println( "\toutformat: png, pnm, tiff, bmp, jpeg");
System.out.println( "\tfilters :\n\t\trotate:angle\n\t\tscale:x,y\n\t\tcrop:x,y,w,h\n\t\tinvert\n");
System.exit(0);
}
try {
float quality = -1.0f;
String outformat = null ;
int i=0 ;
boolean stop = false;
while ( ! stop ) {
if ( args[i].equals("-q") ) {
quality = Float.parseFloat( args[i+1] );
i+=2 ;
} else
if ( args[i].equals("-f") ) {
outformat = args[i+1] ;
i+=2;
} else stop=true ;
}
String infile = args[i++] ;
String outfile = args[i++] ;
System.out.println ( "\nproceeding: " + infile + " => " + outfile + (outformat!=null?" / "+outformat:"") + "\n" );
ImageFiltering filtering = new JAIImageFiltering( infile ) ;
if ( i < args.length ) {
for (int j=i;j<args.length;j++) {
if ( args[j].startsWith("rotate") ) filtering.addFilter(
new RotateImageFilter( Float.parseFloat( args[j].substring(args[j].indexOf(":")+1 ) ) ) ) ;
else
if ( args[j].startsWith("scale") ) filtering.addFilter(
new ScaleImageFilter( Float.parseFloat( args[j].substring(args[j].indexOf(":")+1,
args[j].indexOf(","))), Float.parseFloat(args[j].substring(args[j].indexOf(",")+1) ) ) ) ;
else
if ( args[j].startsWith("crop") ) {
String s=args[j] ;
s=s.substring( s.indexOf(":")+1 );
float x = Float.parseFloat(s.substring( 0, s.indexOf(",") ));
s=s.substring( s.indexOf(",")+1 );
float y = Float.parseFloat(s.substring( 0, s.indexOf(",") ));
s=s.substring( s.indexOf(",")+1 );
float w = Float.parseFloat(s.substring( 0, s.indexOf(",") ));
s=s.substring( s.indexOf(",")+1 );
float h = Float.parseFloat(s);
filtering.addFilter( new CropImageFilter( x,y,w,h) );
} else
if ( args[j].equals("invert") ) filtering.addFilter( new InvertImageFilter() );
}
filtering.proceedFilters () ;
}
if ( quality >= 0.0f ) filtering.setQuality ( quality ) ;
filtering.writeToStream ( new FileOutputStream ( outfile) , outformat ) ;
} catch ( Exception e ) {
e.printStackTrace() ;
}
}
} // end class FilterTool
//////////////////////////////////////////////////////////////////////////////////
//
// $Log: FilterTool.java,v $
// Revision 1.4 2004/02/23 12:22:09 rademacher
// 0.1.0.1
//
// Revision 1.3 2004/02/23 11:57:41 rademacher
// 0.1.0.0
//
// Revision 1.2 2004/02/20 08:36:29 rademacher
// 0.0.0.1
//
// Revision 1.1.1.1 2004/02/19 14:37:31 rademacher
//
//
//
//