You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by an...@apache.org on 2003/08/22 11:20:56 UTC

cvs commit: ant/docs/manual/OptionalTasks image.html

antoine     2003/08/22 02:20:56

  Modified:    .        WHATSNEW
               src/main/org/apache/tools/ant/types/optional/image
                        Scale.java
               src/etc/testcases/taskdefs/optional/image image.xml
               docs/manual/OptionalTasks image.html
  Log:
  Quoting Rob Oxspring :
  
  I was using the image task to create thumbnails and couldn't figure out
  how to keep proportions of an image but keep it within a fixed size.
  My solution was to change the keepproportions attribute to be a little cleverer.
  The keepproportions attribute is no more and has been replaced by the proportions
  attribute, which has been added with the following features:
  
  proportions="ignore" - treat the dimensions independently (==keepproportions="false" and is default)
  proportions="width" - keep proportions based on the width (==keepproportions="true")
  proportions="height" - keep proportions based on the height
  proportions="fit" - keep proportions and fit in the supplied dimensions
  proportions="cover" - keep proportions and cover the supplied dimensions
  
  Submitted by: Rob Oxspring (roxspring at imapmail dot org)
  
  Revision  Changes    Path
  1.490     +3 -0      ant/WHATSNEW
  
  Index: WHATSNEW
  ===================================================================
  RCS file: /home/cvs/ant/WHATSNEW,v
  retrieving revision 1.489
  retrieving revision 1.490
  diff -u -r1.489 -r1.490
  --- WHATSNEW	21 Aug 2003 19:42:15 -0000	1.489
  +++ WHATSNEW	22 Aug 2003 09:20:56 -0000	1.490
  @@ -262,6 +262,9 @@
   
   * Added <image> task (requires JAI).
   
  +* <image> task has now proportions attribute in the <scale/> nested element
  +  instead of keepproportions (bringing in more functionality)
  +
   * New condition <isreference>
   
   * <ftp> now has a preservelastmodified attribute to preserve the
  
  
  
  1.6       +34 -5     ant/src/main/org/apache/tools/ant/types/optional/image/Scale.java
  
  Index: Scale.java
  ===================================================================
  RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/types/optional/image/Scale.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- Scale.java	22 Apr 2003 07:35:17 -0000	1.5
  +++ Scale.java	22 Aug 2003 09:20:56 -0000	1.6
  @@ -53,26 +53,42 @@
    */
   package org.apache.tools.ant.types.optional.image;
   
  +import org.apache.tools.ant.types.EnumeratedAttribute;
  +
   import javax.media.jai.JAI;
   import javax.media.jai.PlanarImage;
  +import javax.media.jai.InterpolationBilinear;
  +import java.awt.RenderingHints;
   import java.awt.image.BufferedImage;
   import java.awt.image.renderable.ParameterBlock;
   
   /**
    *
    * @author <a href="mailto:kzgrey@ntplx.net">Kevin Z Grey</a>
  + * @author <a href="mailto:roxspring@imapmail.org">Rob Oxspring</a>
    * @see org.apache.tools.ant.taskdefs.optional.image.Image
    */
   public class Scale extends TransformOperation implements DrawOperation {
  +
       private String width_str = "100%";
       private String height_str = "100%";
       private boolean x_percent = true;
       private boolean y_percent = true;
  -    private boolean keep_proportions = false;
  +    private String proportions = "ignore";
  +
  +    public static class ProportionsAttribute extends EnumeratedAttribute {
  +        public String[] getValues() {
  +            return new String[] {"ignore", "width", "height", "cover", "fit"};
  +        }
  +    }
   
  -    public void setKeepproportions(boolean props) {
  -        keep_proportions = props;
  +    /**
  +     *  Sets the behaviour regarding the image proportions.
  +     */
  +    public void setProportions(ProportionsAttribute pa){
  +        proportions = pa.getValue();
       }
  +
       /**
        *  Sets the width of the image, either as an integer or a %.  Defaults to 100%.
        */
  @@ -117,19 +133,32 @@
           pb.addSource(image);
           float x_fl = getWidth();
           float y_fl = getHeight();
  +
           if (!x_percent) {
               x_fl = (x_fl / image.getWidth());
           }
           if (!y_percent) {
               y_fl = (y_fl / image.getHeight());
           }
  -        if (keep_proportions) {
  +
  +        if("width".equals(proportions)){
               y_fl = x_fl;
           }
  +        else if("height".equals(proportions)){
  +            x_fl = y_fl;
  +        }
  +        else if("fit".equals(proportions)){
  +            x_fl = y_fl = Math.min(x_fl,y_fl);
  +        }
  +        else if("cover".equals(proportions)){
  +            x_fl = y_fl = Math.max(x_fl,y_fl);
  +        }
  +
           pb.add(new Float(x_fl));
           pb.add(new Float(y_fl));
   
  -        log("\tScaling to " + x_fl + "% x " + y_fl + "%");
  +        log("\tScaling to " + (x_fl*100) + "% x " + (y_fl*100)+ "%");
  +
           return JAI.create("scale", pb);
       }
   
  
  
  
  1.2       +5 -5      ant/src/etc/testcases/taskdefs/optional/image/image.xml
  
  Index: image.xml
  ===================================================================
  RCS file: /home/cvs/ant/src/etc/testcases/taskdefs/optional/image/image.xml,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- image.xml	29 Aug 2002 17:12:17 -0000	1.1
  +++ image.xml	22 Aug 2003 09:20:56 -0000	1.2
  @@ -18,35 +18,35 @@
      	<!-- this should produce a single file in the dest dir -->
   	 	<target name="testSimpleScale" depends="init">
   			<image includes="*.jpg" srcdir="${src.dir}" destdir="${dest.dir}" overwrite="no" failonerror="no">
  -				<scale width="300" keepproportions="true"/>
  +				<scale width="300" proportions="width"/>
   			</image>   
   		</target>   
   
      	<!-- this should put some text in the log -->
   	 	<target name="testEchoToLog" depends="init">
   			<image includes="*.jpg" srcdir="${src.dir}" destdir="${dest.dir}" overwrite="no" failonerror="no">
  -				<scale width="300" keepproportions="true"/>
  +				<scale width="300" proportions="width"/>
   			</image>   
   		</target>   
   		
      	<!-- this should produce a single file in the dest dir -->
   	 	<target name="testFailOnError" depends="init">
   			<image includes="*.jpg" srcdir="${src.dir}" destdir="${dest.dir}" overwrite="no" failonerror="yes">
  -				<scale width="300" keepproportions="true"/>
  +				<scale width="300" proportions="width"/>
   			</image>   
   		</target>   		
   		
   		<!-- this should produce a single file in the dest dir, overwriting any existing file -->
   		<target name="testOverwriteTrue" depends="init">
   			<image includes="*.jpg" srcdir="${src.dir}" destdir="${dest.dir}" overwrite="true" failonerror="no">
  -				<scale width="300" keepproportions="true"/>
  +				<scale width="300" proportions="width"/>
   			</image>   
   		</target>   
   
   		<!-- this should not overwrite the existing file -->
   		<target name="testOverwriteFalse" depends="init">
   			<image includes="*.jpg" srcdir="${src.dir}" destdir="${dest.dir}" overwrite="false" failonerror="no">
  -				<scale width="300" keepproportions="true"/>
  +				<scale width="300" proportions="width"/>
   			</image>   
   		</target>   
      
  
  
  
  1.2       +213 -209  ant/docs/manual/OptionalTasks/image.html
  
  Index: image.html
  ===================================================================
  RCS file: /home/cvs/ant/docs/manual/OptionalTasks/image.html,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- image.html	16 Apr 2003 12:44:44 -0000	1.1
  +++ image.html	22 Aug 2003 09:20:56 -0000	1.2
  @@ -1,209 +1,213 @@
  -<html>
  -
  -<head>
  -<meta http-equiv="Content-Language" content="en-us">
  -<title>Image Task</title>
  -</head>
  -
  -<body>
  -
  -<h2><a name="image">Image</a></h2>
  -<h3>Description</h3>
  -<p>Applies a chain of image operations on a set of files.</p>
  -<p>Requires Java Advanced Image API from Sun.</p>
  -
  -<h5>Overview of used datatypes</h5>
  -<img src="image-classdiagram.gif" border="0" alt="Class-Diagram">
  -
  -<h3>Parameters</h3>
  -<table border="1" cellpadding="2" cellspacing="0">
  -  <tr>
  -    <td valign="top"><b>Attribute</b></td>
  -    <td valign="top"><b>Description</b></td>
  -    <td align="center" valign="top"><b>Required</b></td>
  -  </tr>
  -  <tr>
  -    <td valign="top"> failonerror </td>
  -    <td valign="top"> Boolean value. If false, note errors to the output but keep going. </td>
  -    <td align="center"> no (defaults to <i>true</i>) </td>
  -  </tr>
  -  <tr>
  -    <td valign="top"> srcdir </td>
  -    <td valign="top"> Directory containing the images. </td>
  -    <td align="center"> yes, unless nested fileset is used </td>
  -  </tr>
  -  <tr>
  -    <td valign="top"> encoding </td>
  -    <td valign="top"> Image encoding type. <br>
  -      Valid (caseinsensitive) are: jpg, jpeg, tif, tiff
  -    </td>
  -    <td align="center"> no (defaults to <i>JPEG</i>) </td>
  -  </tr>
  -  <tr>
  -    <td valign="top"> overwrite </td>
  -    <td valign="top"> Boolean value. Sets whether or not to overwrite
  -      a file if there is naming conflict.
  -    </td>
  -    <td align="center"> no (defaults to <i>false</i>) </td>
  -  </tr>
  -  <tr>
  -    <td valign="top"> gc </td>
  -    <td valign="top"> Boolean value. Enables garbage collection after
  -      each image processed.
  -    </td>
  -    <td align="center"> no (defaults to <i>false</i>) </td>
  -  </tr>
  -  <tr>
  -    <td valign="top"> destdir </td>
  -    <td valign="top"> Directory where the result images are stored. </td>
  -    <td align="center"> no (defaults to value of <i>srcdir</i>) </td>
  -  </tr>
  -  <!-- attributes inherited from MatchingTask -->
  -  <tr>
  -    <td valign="top">includes</td>
  -    <td valign="top">comma- or space-separated list of patterns of files that must be
  -      included. All files are included when omitted.</td>
  -    <td valign="top" align="center">No</td>
  -  </tr>
  -  <tr>
  -    <td valign="top">includesfile</td>
  -    <td valign="top">the name of a file. Each line of this file is
  -      taken to be an include pattern</td>
  -    <td valign="top" align="center">No</td>
  -  </tr>
  -  <tr>
  -    <td valign="top"> excludes</td>
  -    <td valign="top">comma- or space-separated list of patterns of files that must be
  -      excluded. No files (except default excludes) are excluded when omitted.</td>
  -    <td valign="top" align="center">No</td>
  -  </tr>
  -  <tr>
  -    <td valign="top">excludesfile</td>
  -    <td valign="top">the name of a file. Each line of this file is
  -      taken to be an exclude pattern</td>
  -    <td valign="top" align="center">No</td>
  -  </tr>
  -  <tr>
  -    <td valign="top">defaultexcludes</td>
  -    <td valign="top">indicates whether default excludes should be used or not
  -      (&quot;yes&quot;/&quot;no&quot;). Default excludes are used when omitted.</td>
  -    <td valign="top" align="center">No</td>
  -  </tr>
  -  <tr>
  -    <td valign="top"> caseSensitive </td>
  -    <td valign="top"> Boolean value. Sets case sensitivity of the file system. </td>
  -    <td align="center"> no (defaults to <i>false</i>) </td>
  -  </tr>
  -  <tr>
  -    <td valign="top"> followSymlinks </td>
  -    <td valign="top"> Boolean value. Sets whether or not symbolic links hsould be followed. </td>
  -    <td align="center"> no (defaults to <i>true</i>) </td>
  -  </tr>
  -</table>
  -
  -<h3>Parameters specified as nested elements</h3>
  -<p>This task forms an implicit <a href="../CoreTypes/fileset.html">FileSet</a> and
  -supports all attributes of <code>&lt;fileset&gt;</code> as well as the
  -nested <code>&lt;include&gt;</code>, <code>&lt;exclude&gt;</code> and
  -<code>&lt;patternset&gt;</code> elements.</p>
  -
  -
  -<h4>ImageOperation</h4>
  -<p>Adds an ImageOperation to chain.</p>
  -<h5>Nested Elements</h5>
  -ImageOperation can handle nested Rotate, Draw, Rectangle, Text and Scale objects.
  -
  -<h4>Rotate</h4>
  -<p>Adds a Rotate ImageOperation to chain.</p>
  -<h5>Parameters</h5>
  -<table border="1" cellpadding="2" cellspacing="0">
  -  <tr>
  -    <td valign="top"><b>Attribute</b></td>
  -    <td valign="top"><b>Description</b></td>
  -    <td align="center" valign="top"><b>Required</b></td>
  -  </tr>
  -  <tr>
  -    <td valign="top"> angle </td>
  -    <td valign="top"> Float value. Sets the angle of rotation in degrees. </td>
  -    <td align="center"> no (defaults to <i>0.0F</i>) </td>
  -  </tr>
  -</table>
  -
  -<h4>Scale</h4>
  -<p>Adds a Scale ImageOperation to chain.</p>
  -<h5>Parameters</h5>
  -<table border="1" cellpadding="2" cellspacing="0">
  -  <tr>
  -    <td valign="top"><b>Attribute</b></td>
  -    <td valign="top"><b>Description</b></td>
  -    <td align="center" valign="top"><b>Required</b></td>
  -  </tr>
  -  <tr>
  -    <td valign="top"> keepproportions </td>
  -    <td valign="top"> Boolean value. Sets whether the proportion heigth/width should be kept. </td>
  -    <td align="center"> no (defaults to <i>false</i>) </td>
  -  </tr>
  -  <tr>
  -    <td valign="top"> width </td>
  -    <td valign="top"> Sets the width of the image, either as an integer or a %. </td>
  -        <!-- todo: if integer, what kind? cm, px, inches, ... -->
  -    <td align="center"> no (defaults to <i>100%</i>) </td>
  -  </tr>
  -  <tr>
  -    <td valign="top"> heigth </td>
  -    <td valign="top"> Sets the height of the image, either as an integer or a %. </td>
  -        <!-- todo: if integer, what kind? cm, px, inches, ... -->
  -    <td align="center"> no (defaults to <i>100%</i>) </td>
  -  </tr>
  -</table>
  -
  -<h4>Draw</h4>
  -<p>Adds a Draw ImageOperation to chain. DrawOperation DataType objects can be
  -nested inside the Draw object.</p>
  -<h5>Parameters</h5>
  -<table border="1" cellpadding="2" cellspacing="0">
  -  <tr>
  -    <td valign="top"><b>Attribute</b></td>
  -    <td valign="top"><b>Description</b></td>
  -    <td align="center" valign="top"><b>Required</b></td>
  -  </tr>
  -  <tr>
  -    <td valign="top"> xloc </td>
  -    <td valign="top"> X-Position where to draw nested image elements. </td>
  -    <td align="center"> no (defaults to <i>0</i>) </td>
  -  </tr>
  -  <tr>
  -    <td valign="top"> yloc </td>
  -    <td valign="top"> Y-Position where to draw nested image elements. </td>
  -    <td align="center"> no (defaults to <i>0</i>) </td>
  -  </tr>
  -</table>
  -
  -<h3>Examples</h3>
  -
  -<blockquote><pre>
  -&lt;image srcdir="src" includes="*.png"&gt;
  -    &lt;scale keepproportions="true" width="40"/&gt;
  -&lt;/image&gt;
  -</pre></blockquote>
  -<p>Creates a thumbnail for all PNG-files in <i>src</i> in the size of 40 pixel keeping the proportions
  -and stores the <i>src</i>.</p>
  -
  -<blockquote><pre>
  -&lt;image srcdir="src" destdir="dest" includes="*.png"&gt;
  -    &lt;scale keepproportions="true" width="40"/&gt;
  -&lt;/image&gt;
  -</pre></blockquote>
  -<p>Same as above but stores the result in <i>dest</i>.</p>
  -
  -<blockquote><pre>
  -</pre></blockquote>
  -
  -<hr>
  -<p align="center">Copyright &copy; 2003 Apache Software
  -Foundation. All rights Reserved.</p>
  -
  -</body>
  -</html>
  -
  -
  +<html>
  +
  +<head>
  +<meta http-equiv="Content-Language" content="en-us">
  +<title>Image Task</title>
  +</head>
  +
  +<body>
  +
  +<h2><a name="image">Image</a></h2>
  +<h3>Description</h3>
  +<p>Applies a chain of image operations on a set of files.</p>
  +<p>Requires Java Advanced Image API from Sun.</p>
  +
  +<h5>Overview of used datatypes</h5>
  +<img src="image-classdiagram.gif" border="0" alt="Class-Diagram">
  +
  +<h3>Parameters</h3>
  +<table border="1" cellpadding="2" cellspacing="0">
  +  <tr>
  +    <td valign="top"><b>Attribute</b></td>
  +    <td valign="top"><b>Description</b></td>
  +    <td align="center" valign="top"><b>Required</b></td>
  +  </tr>
  +  <tr>
  +    <td valign="top"> failonerror </td>
  +    <td valign="top"> Boolean value. If false, note errors to the output but keep going. </td>
  +    <td align="center"> no (defaults to <i>true</i>) </td>
  +  </tr>
  +  <tr>
  +    <td valign="top"> srcdir </td>
  +    <td valign="top"> Directory containing the images. </td>
  +    <td align="center"> yes, unless nested fileset is used </td>
  +  </tr>
  +  <tr>
  +    <td valign="top"> encoding </td>
  +    <td valign="top"> Image encoding type. <br>
  +      Valid (caseinsensitive) are: jpg, jpeg, tif, tiff
  +    </td>
  +    <td align="center"> no (defaults to <i>JPEG</i>) </td>
  +  </tr>
  +  <tr>
  +    <td valign="top"> overwrite </td>
  +    <td valign="top"> Boolean value. Sets whether or not to overwrite
  +      a file if there is naming conflict.
  +    </td>
  +    <td align="center"> no (defaults to <i>false</i>) </td>
  +  </tr>
  +  <tr>
  +    <td valign="top"> gc </td>
  +    <td valign="top"> Boolean value. Enables garbage collection after
  +      each image processed.
  +    </td>
  +    <td align="center"> no (defaults to <i>false</i>) </td>
  +  </tr>
  +  <tr>
  +    <td valign="top"> destdir </td>
  +    <td valign="top"> Directory where the result images are stored. </td>
  +    <td align="center"> no (defaults to value of <i>srcdir</i>) </td>
  +  </tr>
  +  <!-- attributes inherited from MatchingTask -->
  +  <tr>
  +    <td valign="top">includes</td>
  +    <td valign="top">comma- or space-separated list of patterns of files that must be
  +      included. All files are included when omitted.</td>
  +    <td valign="top" align="center">No</td>
  +  </tr>
  +  <tr>
  +    <td valign="top">includesfile</td>
  +    <td valign="top">the name of a file. Each line of this file is
  +      taken to be an include pattern</td>
  +    <td valign="top" align="center">No</td>
  +  </tr>
  +  <tr>
  +    <td valign="top"> excludes</td>
  +    <td valign="top">comma- or space-separated list of patterns of files that must be
  +      excluded. No files (except default excludes) are excluded when omitted.</td>
  +    <td valign="top" align="center">No</td>
  +  </tr>
  +  <tr>
  +    <td valign="top">excludesfile</td>
  +    <td valign="top">the name of a file. Each line of this file is
  +      taken to be an exclude pattern</td>
  +    <td valign="top" align="center">No</td>
  +  </tr>
  +  <tr>
  +    <td valign="top">defaultexcludes</td>
  +    <td valign="top">indicates whether default excludes should be used or not
  +      (&quot;yes&quot;/&quot;no&quot;). Default excludes are used when omitted.</td>
  +    <td valign="top" align="center">No</td>
  +  </tr>
  +  <tr>
  +    <td valign="top"> caseSensitive </td>
  +    <td valign="top"> Boolean value. Sets case sensitivity of the file system. </td>
  +    <td align="center"> no (defaults to <i>false</i>) </td>
  +  </tr>
  +  <tr>
  +    <td valign="top"> followSymlinks </td>
  +    <td valign="top"> Boolean value. Sets whether or not symbolic links hsould be followed. </td>
  +    <td align="center"> no (defaults to <i>true</i>) </td>
  +  </tr>
  +</table>
  +
  +<h3>Parameters specified as nested elements</h3>
  +<p>This task forms an implicit <a href="../CoreTypes/fileset.html">FileSet</a> and
  +supports all attributes of <code>&lt;fileset&gt;</code> as well as the
  +nested <code>&lt;include&gt;</code>, <code>&lt;exclude&gt;</code> and
  +<code>&lt;patternset&gt;</code> elements.</p>
  +
  +
  +<h4>ImageOperation</h4>
  +<p>Adds an ImageOperation to chain.</p>
  +<h5>Nested Elements</h5>
  +ImageOperation can handle nested Rotate, Draw, Rectangle, Text and Scale objects.
  +
  +<h4>Rotate</h4>
  +<p>Adds a Rotate ImageOperation to chain.</p>
  +<h5>Parameters</h5>
  +<table border="1" cellpadding="2" cellspacing="0">
  +  <tr>
  +    <td valign="top"><b>Attribute</b></td>
  +    <td valign="top"><b>Description</b></td>
  +    <td align="center" valign="top"><b>Required</b></td>
  +  </tr>
  +  <tr>
  +    <td valign="top"> angle </td>
  +    <td valign="top"> Float value. Sets the angle of rotation in degrees. </td>
  +    <td align="center"> no (defaults to <i>0.0F</i>) </td>
  +  </tr>
  +</table>
  +
  +<h4>Scale</h4>
  +<p>Adds a Scale ImageOperation to chain.</p>
  +<h5>Parameters</h5>
  +<table border="1" cellpadding="2" cellspacing="0">
  +  <tr>
  +    <td valign="top"><b>Attribute</b></td>
  +    <td valign="top"><b>Description</b></td>
  +    <td align="center" valign="top"><b>Required</b></td>
  +  </tr>
  +    <td valign="top"> proportions </td>
  +    <td valign="top"> Sets which dimension to control proportions from. Valid values are:<ul>
  +        <li>&quot;ignore&quot; -  treat the dimensions independently.</li>
  +        <li>&quot;height&quot; - keep proportions based on the width.</li>
  +        <li>&quot;width&quot; - keep proportions based on the height.</li>
  +        <li>&quot;cover&quot; - keep proportions and fit in the supplied dimensions.</li>
  +        <li>&quot;fit&quot; - keep proportions and cover the supplied dimensions.</li>
  +    </ul></td>
  ++    <td align="center"> no (defaults to <i>ignore</i>) </td>
  +  <tr>
  +    <td valign="top"> width </td>
  +    <td valign="top"> Sets the width of the image, either as an integer or a %. </td>
  +        <!-- todo: if integer, what kind? cm, px, inches, ... -->
  +    <td align="center"> no (defaults to <i>100%</i>) </td>
  +  </tr>
  +  <tr>
  +    <td valign="top"> heigth </td>
  +    <td valign="top"> Sets the height of the image, either as an integer or a %. </td>
  +        <!-- todo: if integer, what kind? cm, px, inches, ... -->
  +    <td align="center"> no (defaults to <i>100%</i>) </td>
  +  </tr>
  +</table>
  +
  +<h4>Draw</h4>
  +<p>Adds a Draw ImageOperation to chain. DrawOperation DataType objects can be
  +nested inside the Draw object.</p>
  +<h5>Parameters</h5>
  +<table border="1" cellpadding="2" cellspacing="0">
  +  <tr>
  +    <td valign="top"><b>Attribute</b></td>
  +    <td valign="top"><b>Description</b></td>
  +    <td align="center" valign="top"><b>Required</b></td>
  +  </tr>
  +  <tr>
  +    <td valign="top"> xloc </td>
  +    <td valign="top"> X-Position where to draw nested image elements. </td>
  +    <td align="center"> no (defaults to <i>0</i>) </td>
  +  </tr>
  +  <tr>
  +    <td valign="top"> yloc </td>
  +    <td valign="top"> Y-Position where to draw nested image elements. </td>
  +    <td align="center"> no (defaults to <i>0</i>) </td>
  +  </tr>
  +</table>
  +
  +<h3>Examples</h3>
  +
  +<blockquote><pre>
  +&lt;image srcdir="src" includes="*.png"&gt;
  +    &lt;scale keepproportions="true" width="40"/&gt;
  +&lt;/image&gt;
  +</pre></blockquote>
  +<p>Creates a thumbnail for all PNG-files in <i>src</i> in the size of 40 pixel keeping the proportions
  +and stores the <i>src</i>.</p>
  +
  +<blockquote><pre>
  +&lt;image srcdir="src" destdir="dest" includes="*.png"&gt;
  +    &lt;scale keepproportions="true" width="40"/&gt;
  +&lt;/image&gt;
  +</pre></blockquote>
  +<p>Same as above but stores the result in <i>dest</i>.</p>
  +
  +<blockquote><pre>
  +</pre></blockquote>
  +
  +<hr>
  +<p align="center">Copyright &copy; 2003 Apache Software
  +Foundation. All rights Reserved.</p>
  +
  +</body>
  +</html>
  +
  +
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org