<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
   <title>SWT - Image Analyzer Example</title>
</head>
<body>

<h2>SWT standalone example - Image Analyzer</h2>

<p>
The ImageAnalyzer example opens image files and displays their visual contents and
an image data summary.
The user can make adjustments to various elements of the image such as scaling and Alpha
blending, and can save these changes to a file.
</p>
<p>
The ImageAnalyzer can load and display image files of type GIF, JPEG, BMP, ICO, and PNG.
If a loaded file is an interlaced GIF or PNG, or a progressive JPEG, and <strong>Incremental Display</strong> is selected,
then the ImageAnalyzer will display the image increments as they are loaded.
If the file contains an animated GIF, then the <strong>Next</strong>, <strong>Previous</strong>, and <strong>Animate</strong> buttons become enabled,
and can be used to cycle through and animate the images in the file. If a GIF defines a background color,
as many animated GIFs do, then selecting <strong>Background</strong> will use the GIF's background color.
If the image has transparency, which is possible with images of type GIF, PNG, and ICO, then selecting <strong>Display Mask</strong> will draw the image's transparency
mask to the right of the image. You can change the background color of the ImageAnalyzer in order to see the transparency work.
To turn off transparency, deselect <strong>Display Transparency</strong>.
After an image is loaded, it can be scaled with the <strong>Scale</strong> combo, or have alpha transparency applied to it using the <strong>Alpha-K</strong> combo
and <strong>Alpha</strong> menu. <strong>File</strong> &gt; <strong>Reopen</strong> restores the scaling and alpha attributes to their default values and reloads the current image file.
If the image has transparency,
<strong>File</strong> &gt; <strong>Save Mask As...</strong> can be used to save the image's transparency mask.
</p>
<p>
When SWT loads an image file, an instance of <code>org.eclipse.swt.graphics.ImageData</code> is created (though in the case of an ICO file or
multi-image GIF an array of <code>ImageData</code> instances is created). The ImageAnalyzer displays all of the data stored in the <code>ImageData</code>
instance(s) for the currently loaded image file, including the pixel data. Hovering over a pixel in the image display will show the RGB
color data for that pixel. For certain images, particularly animated GIFs, additional data is stored in the <code>org.eclipse.swt.graphics.ImageLoader</code>
instance that is used to load the image. The ImageAnalyzer displays this data as well.
</p>

<h3>Running the example</h3>

<p>
Follow the <a href="swt_manual_setup.html">SWT standalone examples setup</a> 
instructions to install and run the example from your workspace.
</p>
<p>
The "Main" class is <code>org.eclipse.swt.examples.imageanalyzer.ImageAnalyzer</code>.
</p>
<p>
This example can also be run using the <a href="../../org.eclipse.swt.examples.launcher/doc-html/swt_launcher_ex.html">Example Launcher</a>.
Select the <strong>Image Analyzer</strong> item from the <strong>Standalone</strong> category and click <strong>Run</strong>.
</p>

<p><a href="hglegal.htm"><img SRC="ngibmcpy.gif" ALT="Copyright IBM Corporation and others 2000, 2004.  All Rights Reserved." BORDER=0 height=14 width=324></a></p>
</body>
</html>
