<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2F2D_Graphics_GUI%2FColor_Model</id>
		<title>Java/2D Graphics GUI/Color Model - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2F2D_Graphics_GUI%2FColor_Model"/>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/2D_Graphics_GUI/Color_Model&amp;action=history"/>
		<updated>2026-04-18T22:14:19Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java/2D_Graphics_GUI/Color_Model&amp;diff=8151&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/2D_Graphics_GUI/Color_Model&amp;diff=8151&amp;oldid=prev"/>
				<updated>2010-06-01T06:55:18Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 06:55, 1 июня 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java/2D_Graphics_GUI/Color_Model&amp;diff=8150&amp;oldid=prev</id>
		<title> в 18:01, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/2D_Graphics_GUI/Color_Model&amp;diff=8150&amp;oldid=prev"/>
				<updated>2010-05-31T18:01:46Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Checking for Color Models ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;   &lt;br /&gt;
import java.awt.Frame;&lt;br /&gt;
import java.awt.Graphics;&lt;br /&gt;
import java.awt.Graphics2D;&lt;br /&gt;
import java.awt.GraphicsConfiguration;&lt;br /&gt;
import java.awt.image.BufferedImage;&lt;br /&gt;
import java.awt.image.ColorModel;&lt;br /&gt;
import java.awt.image.DirectColorModel;&lt;br /&gt;
import java.awt.image.IndexColorModel;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
public class GraphicsInfo extends JFrame {&lt;br /&gt;
  private void printModelType(ColorModel cm) {&lt;br /&gt;
    if (cm instanceof DirectColorModel) {&lt;br /&gt;
      System.out.println(&amp;quot;DirectColorModel&amp;quot;);&lt;br /&gt;
    } else if (cm instanceof IndexColorModel) {&lt;br /&gt;
      System.out.println(&amp;quot;IndexColorModel&amp;quot;);&lt;br /&gt;
    } else {&lt;br /&gt;
      System.out.println(&amp;quot;Unknown ColorModel&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public void paint(Graphics g) {&lt;br /&gt;
    Graphics2D g2d = (Graphics2D) g;&lt;br /&gt;
    GraphicsConfiguration gc = g2d.getDeviceConfiguration();&lt;br /&gt;
    printModelType(gc.getColorModel());&lt;br /&gt;
    BufferedImage bi = new BufferedImage(20, 20,&lt;br /&gt;
        BufferedImage.TYPE_BYTE_INDEXED);&lt;br /&gt;
    Graphics2D g2d2 = bi.createGraphics();&lt;br /&gt;
    GraphicsConfiguration gc2 = g2d2.getDeviceConfiguration();&lt;br /&gt;
    printModelType(gc2.getColorModel());&lt;br /&gt;
    bi = new BufferedImage(20, 20, BufferedImage.TYPE_INT_ARGB);&lt;br /&gt;
    g2d2 = bi.createGraphics();&lt;br /&gt;
    gc2 = g2d2.getDeviceConfiguration();&lt;br /&gt;
    printModelType(gc2.getColorModel());&lt;br /&gt;
    bi = new BufferedImage(20, 20, BufferedImage.TYPE_USHORT_565_RGB);&lt;br /&gt;
    g2d2 = bi.createGraphics();&lt;br /&gt;
    gc2 = g2d2.getDeviceConfiguration();&lt;br /&gt;
    printModelType(gc2.getColorModel());&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    Frame f = new GraphicsInfo();&lt;br /&gt;
    f.setTitle(&amp;quot;GraphicsInfo&amp;quot;);&lt;br /&gt;
    f.setSize(300, 250);&lt;br /&gt;
    f.show();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
         &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Color Composite ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;   &lt;br /&gt;
import java.awt.AlphaComposite;&lt;br /&gt;
import java.awt.BasicStroke;&lt;br /&gt;
import java.awt.BorderLayout;&lt;br /&gt;
import java.awt.Color;&lt;br /&gt;
import java.awt.Container;&lt;br /&gt;
import java.awt.GradientPaint;&lt;br /&gt;
import java.awt.Graphics;&lt;br /&gt;
import java.awt.Graphics2D;&lt;br /&gt;
import java.awt.Rectangle;&lt;br /&gt;
import java.awt.TexturePaint;&lt;br /&gt;
import java.awt.event.WindowAdapter;&lt;br /&gt;
import java.awt.event.WindowEvent;&lt;br /&gt;
import java.awt.geom.Rectangle2D;&lt;br /&gt;
import java.awt.image.BufferedImage;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JLabel;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
import javax.swing.JSlider;&lt;br /&gt;
import javax.swing.JTextField;&lt;br /&gt;
import javax.swing.event.ChangeEvent;&lt;br /&gt;
import javax.swing.event.ChangeListener;&lt;br /&gt;
public class ColorComposite extends JFrame {&lt;br /&gt;
  MyCanvas canvas;&lt;br /&gt;
  JTextField textField;&lt;br /&gt;
  float alphaValue = 0.65f;&lt;br /&gt;
  public ColorComposite() {&lt;br /&gt;
    super();&lt;br /&gt;
    Container container = getContentPane();&lt;br /&gt;
    canvas = new MyCanvas();&lt;br /&gt;
    container.add(canvas);&lt;br /&gt;
    JPanel panel = new JPanel();&lt;br /&gt;
    JLabel label = new JLabel(&amp;quot;Color-Composite: &amp;quot;);&lt;br /&gt;
    JSlider slider = new JSlider(JSlider.HORIZONTAL, 0, 100, 65);&lt;br /&gt;
    slider.addChangeListener(new ChangeListener() {&lt;br /&gt;
      public void stateChanged(ChangeEvent e) {&lt;br /&gt;
        JSlider tempSlider = (JSlider) e.getSource();&lt;br /&gt;
        alphaValue = (float) (tempSlider.getValue() / 100.0);&lt;br /&gt;
        textField.setText(Float.toString(alphaValue));&lt;br /&gt;
        canvas.repaint();&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    textField = new JTextField(&amp;quot;0.65&amp;quot;, 4);&lt;br /&gt;
    panel.add(label);&lt;br /&gt;
    panel.add(slider);&lt;br /&gt;
    panel.add(textField);&lt;br /&gt;
    container.add(BorderLayout.SOUTH, panel);&lt;br /&gt;
    addWindowListener(new WindowAdapter() {&lt;br /&gt;
      public void windowClosing(WindowEvent e) {&lt;br /&gt;
        System.exit(0);&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    setSize(450,450);&lt;br /&gt;
    setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String arg[]) {&lt;br /&gt;
    new ColorComposite();&lt;br /&gt;
  }&lt;br /&gt;
  class MyCanvas extends JLabel {&lt;br /&gt;
    Rectangle2D rec1, rec2, rec3, rec4, rec5;&lt;br /&gt;
    MyCanvas() {&lt;br /&gt;
      rec1 = new Rectangle2D.Float(25, 25, 75, 150);&lt;br /&gt;
      rec2 = new Rectangle2D.Float(125, 25, 100, 75);&lt;br /&gt;
      rec3 = new Rectangle2D.Float(75, 125, 125, 75);&lt;br /&gt;
      rec4 = new Rectangle2D.Float(225, 125, 125, 75);&lt;br /&gt;
      rec5 = new Rectangle2D.Float(150, 50, 125, 175);&lt;br /&gt;
      setBackground(Color.white);&lt;br /&gt;
      setSize(400, 225);&lt;br /&gt;
    }&lt;br /&gt;
    public void paint(Graphics g) {&lt;br /&gt;
      Graphics2D g2D = (Graphics2D) g;&lt;br /&gt;
      AlphaComposite ac = AlphaComposite.getInstance(&lt;br /&gt;
          AlphaComposite.SRC_OVER, alphaValue);&lt;br /&gt;
      g2D.setComposite(ac);&lt;br /&gt;
      g2D.setStroke(new BasicStroke(5.0f));&lt;br /&gt;
      g2D.draw(rec1);&lt;br /&gt;
      GradientPaint gp = new GradientPaint(125f, 25f, Color.yellow, 225f,&lt;br /&gt;
          100f, Color.blue);&lt;br /&gt;
      g2D.setPaint(gp);&lt;br /&gt;
      g2D.fill(rec2);&lt;br /&gt;
      BufferedImage bi = new BufferedImage(5, 5,&lt;br /&gt;
          BufferedImage.TYPE_INT_RGB);&lt;br /&gt;
      Graphics2D big = bi.createGraphics();&lt;br /&gt;
      big.setColor(Color.magenta);&lt;br /&gt;
      big.fillRect(0, 0, 5, 5);&lt;br /&gt;
      big.setColor(Color.black);&lt;br /&gt;
      big.drawLine(0, 0, 5, 5);&lt;br /&gt;
      Rectangle r = new Rectangle(0, 0, 5, 5);&lt;br /&gt;
      TexturePaint tp = new TexturePaint(bi, r);&lt;br /&gt;
      g2D.setPaint(tp);&lt;br /&gt;
      g2D.fill(rec3);&lt;br /&gt;
      g2D.setColor(Color.green);&lt;br /&gt;
      g2D.fill(rec4);&lt;br /&gt;
      g2D.setColor(Color.red);&lt;br /&gt;
      g2D.fill(rec5);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
         &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Color model demo ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;   &lt;br /&gt;
import java.awt.Color;&lt;br /&gt;
import java.awt.Transparency;&lt;br /&gt;
import java.awt.color.ColorSpace;&lt;br /&gt;
import java.awt.image.ColorModel;&lt;br /&gt;
import java.awt.image.ruponentColorModel;&lt;br /&gt;
import java.awt.image.DataBuffer;&lt;br /&gt;
public class ComponentTest {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_sRGB);&lt;br /&gt;
    ColorModel cm = new ComponentColorModel(cs, new int[] { 5, 6, 5 },&lt;br /&gt;
        false, false, Transparency.OPAQUE, DataBuffer.TYPE_BYTE);&lt;br /&gt;
    Color fifty = new Color(cs, new float[] { 1.0f, 1.0f, 1.0f }, 0);&lt;br /&gt;
    float[] components = fifty.getComponents(null);&lt;br /&gt;
    System.out.print(&amp;quot;Original normalized components: &amp;quot;);&lt;br /&gt;
    for (int i = 0; i &amp;lt; 3; i++)&lt;br /&gt;
      System.out.print(components[i] + &amp;quot; &amp;quot;);&lt;br /&gt;
    System.out.println();&lt;br /&gt;
    int[] unnormalized = cm.getUnnormalizedComponents(components, 0, null,&lt;br /&gt;
        0);&lt;br /&gt;
    System.out.print(&amp;quot;Original unnormalized components: &amp;quot;);&lt;br /&gt;
    for (int i = 0; i &amp;lt; 3; i++)&lt;br /&gt;
      System.out.print(unnormalized[i] + &amp;quot; &amp;quot;);&lt;br /&gt;
    System.out.println();&lt;br /&gt;
    Object pixel = cm.getDataElements(unnormalized, 0, (Object) null);&lt;br /&gt;
    System.out.print(&amp;quot;Pixel samples: &amp;quot;);&lt;br /&gt;
    byte[] pixelBytes = (byte[]) pixel;&lt;br /&gt;
    for (int i = 0; i &amp;lt; 3; i++)&lt;br /&gt;
      System.out.print(pixelBytes[i] + &amp;quot; &amp;quot;);&lt;br /&gt;
    System.out.println();&lt;br /&gt;
    unnormalized = cm.getComponents(pixel, null, 0);&lt;br /&gt;
    System.out.print(&amp;quot;Derived unnormalized components: &amp;quot;);&lt;br /&gt;
    for (int i = 0; i &amp;lt; 3; i++)&lt;br /&gt;
      System.out.print(unnormalized[i] + &amp;quot; &amp;quot;);&lt;br /&gt;
    System.out.println();&lt;br /&gt;
    components = cm.getNormalizedComponents(unnormalized, 0, null, 0);&lt;br /&gt;
    System.out.print(&amp;quot;Derived normalized components: &amp;quot;);&lt;br /&gt;
    for (int i = 0; i &amp;lt; 3; i++)&lt;br /&gt;
      System.out.print(components[i] + &amp;quot; &amp;quot;);&lt;br /&gt;
    System.out.println();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
         &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Color Schema Generator ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;  &lt;br /&gt;
/*&lt;br /&gt;
 * To change this template, choose Tools | Templates&lt;br /&gt;
 * and open the template in the editor.&lt;br /&gt;
 */&lt;br /&gt;
// Revised from jaspersoft ireport designer&lt;br /&gt;
import java.awt.Color;&lt;br /&gt;
import java.util.ArrayList;&lt;br /&gt;
import java.util.HashMap;&lt;br /&gt;
import java.util.List;&lt;br /&gt;
/**&lt;br /&gt;
 *&lt;br /&gt;
 * @author gtoffoli&lt;br /&gt;
 */&lt;br /&gt;
public class ColorSchemaGenerator {&lt;br /&gt;
    public final static String SCHEMA_DEFAULT = &amp;quot;default&amp;quot;;&lt;br /&gt;
    public final static String SCHEMA_PASTEL = &amp;quot;pastel&amp;quot;;&lt;br /&gt;
    public final static String SCHEMA_SOFT = &amp;quot;soft&amp;quot;;&lt;br /&gt;
    public final static String SCHEMA_HARD = &amp;quot;hard&amp;quot;;&lt;br /&gt;
    public final static String SCHEMA_LIGHT = &amp;quot;light&amp;quot;;&lt;br /&gt;
    public final static String SCHEMA_PALE = &amp;quot;pale&amp;quot;;&lt;br /&gt;
    &lt;br /&gt;
    private static float[] schema_default = new float[]{ -1f,-1f, 1f,-0.7f, 0.25f,1f, 0.5f,1f };&lt;br /&gt;
    private static float[] schema_pastel = new float[]{ 0.5f,-0.9f, 0.5f,0.5f, 0.1f,0.9f, 0.75f,0.75f };&lt;br /&gt;
    private static float[] schema_soft = new float[]{ 0.3f,-0.8f, 0.3f,0.5f, 0.1f,0.9f, 0.5f,0.75f };&lt;br /&gt;
    private static float[] schema_hard = new float[]{ 1f,-1f, 1f,-0.6f, 0.1f,1f, 0.6f,1f };&lt;br /&gt;
    private static float[] schema_light = new float[]{ 0.25f,1f, 0.5f,0.75f, 0.1f,1f, 0.5f,1f };&lt;br /&gt;
    private static float[] schema_pale = new float[]{ 0.1f,-0.85f, 0.1f,0.5f, 0.1f,1f, 0.1f,0.75f };&lt;br /&gt;
    &lt;br /&gt;
    private static java.util.Map&amp;lt;String, float[]&amp;gt; schemas = new HashMap&amp;lt;String, float[]&amp;gt;();&lt;br /&gt;
    &lt;br /&gt;
    static {&lt;br /&gt;
        &lt;br /&gt;
        schemas.put(SCHEMA_DEFAULT, schema_default);&lt;br /&gt;
        schemas.put(SCHEMA_PASTEL, schema_pastel);&lt;br /&gt;
        schemas.put(SCHEMA_SOFT, schema_soft);&lt;br /&gt;
        schemas.put(SCHEMA_HARD, schema_hard);&lt;br /&gt;
        schemas.put(SCHEMA_LIGHT, schema_light);&lt;br /&gt;
        schemas.put(SCHEMA_PALE, schema_pale);&lt;br /&gt;
        &lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    /**&lt;br /&gt;
     * Create the schema color.&lt;br /&gt;
     * &lt;br /&gt;
     * @param base&lt;br /&gt;
     * @param i (a color between 0 and 3)&lt;br /&gt;
     * @param schemaName&lt;br /&gt;
     * @return&lt;br /&gt;
     */&lt;br /&gt;
    public static Color createColor(Color base, int i, String schemaName)&lt;br /&gt;
    {&lt;br /&gt;
        &lt;br /&gt;
        i = Math.abs(i %= 3); &lt;br /&gt;
        if (schemaName == null) schemaName = SCHEMA_SOFT;&lt;br /&gt;
        float[] schema = schemas.get(schemaName);&lt;br /&gt;
        &lt;br /&gt;
        float[] components = Color.RGBtoHSB(base.getRed(), base.getGreen(), base.getBlue(), null);&lt;br /&gt;
  &lt;br /&gt;
        components[1] = (schema[i*2] &amp;lt; 0) ? -schema[i*2] * components[1] : schema[i*2];&lt;br /&gt;
        if (components[1] &amp;gt; 1) components[1] = 1.0f;&lt;br /&gt;
        if (components[1] &amp;lt; 0) components[1] = 0;&lt;br /&gt;
        &lt;br /&gt;
        &lt;br /&gt;
        components[2] = (schema[i*2+1] &amp;lt; 0) ? -schema[i*2+1] * components[2] : schema[i*2+1];&lt;br /&gt;
        if (components[2] &amp;gt; 1) components[2] = 1.0f;&lt;br /&gt;
        if (components[2] &amp;lt; 0) components[2] = 0;&lt;br /&gt;
        &lt;br /&gt;
        return new Color( Color.HSBtoRGB(components[0], components[1], components[2]));&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    public static List&amp;lt;String&amp;gt; getColors()&lt;br /&gt;
    {&lt;br /&gt;
        if (colorsList == null)&lt;br /&gt;
        {&lt;br /&gt;
            colorsList = new ArrayList&amp;lt;String&amp;gt;();&lt;br /&gt;
            colorsMap = new HashMap&amp;lt;String,String&amp;gt;();&lt;br /&gt;
            &lt;br /&gt;
            for (int i=0; i&amp;lt;colors.length/2; ++i)&lt;br /&gt;
            {&lt;br /&gt;
                colorsList.add( colors[i*2] );&lt;br /&gt;
                colorsMap.put(colors[i*2], colors[(i*2)+1]);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        return colorsList;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    public static Color getColor(String name)&lt;br /&gt;
    {&lt;br /&gt;
        if (colorsMap == null)&lt;br /&gt;
        {&lt;br /&gt;
            getColors();&lt;br /&gt;
        }&lt;br /&gt;
        String rgb = colorsMap.get(name);&lt;br /&gt;
        return decodeColor(&amp;quot;#&amp;quot;+rgb);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    public static java.awt.Color decodeColor(String colorString)&lt;br /&gt;
    {&lt;br /&gt;
        java.awt.Color color = null;&lt;br /&gt;
        char firstChar = colorString.charAt(0);&lt;br /&gt;
        if (firstChar == &amp;quot;#&amp;quot;)&lt;br /&gt;
        {&lt;br /&gt;
               color = new java.awt.Color(Integer.parseInt(colorString.substring(1), 16));&lt;br /&gt;
        }&lt;br /&gt;
        else if (&amp;quot;0&amp;quot; &amp;lt;= firstChar &amp;amp;&amp;amp; firstChar &amp;lt;= &amp;quot;9&amp;quot;)&lt;br /&gt;
        {&lt;br /&gt;
               color = new java.awt.Color(Integer.parseInt(colorString));&lt;br /&gt;
        }&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
               color = java.awt.Color.black;&lt;br /&gt;
        }&lt;br /&gt;
        return color;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    static private List&amp;lt;String&amp;gt; colorsList = null;&lt;br /&gt;
    static private HashMap&amp;lt;String, String&amp;gt; colorsMap = null;&lt;br /&gt;
    &lt;br /&gt;
    static private String[] colors = new String[]{&lt;br /&gt;
            &amp;quot;Aliceblue&amp;quot;,&amp;quot;F0F8FF&amp;quot;,&lt;br /&gt;
            &amp;quot;Antiquewhite&amp;quot;,&amp;quot;FAEBD7&amp;quot;,&lt;br /&gt;
            &amp;quot;Aqua&amp;quot;,&amp;quot;00FFFF&amp;quot;,&lt;br /&gt;
            &amp;quot;Aquamarine&amp;quot;,&amp;quot;7FFFD4&amp;quot;,&lt;br /&gt;
            &amp;quot;Azure&amp;quot;,&amp;quot;F0FFFF&amp;quot;,&lt;br /&gt;
            &amp;quot;Beige&amp;quot;,&amp;quot;F5F5DC&amp;quot;,&lt;br /&gt;
            &amp;quot;Bisque&amp;quot;,&amp;quot;FFE4C4&amp;quot;,&lt;br /&gt;
            &amp;quot;Black&amp;quot;,&amp;quot;000000&amp;quot;,&lt;br /&gt;
            &amp;quot;Blanchedalmond&amp;quot;,&amp;quot;FFEBCD&amp;quot;,&lt;br /&gt;
            &amp;quot;Blue&amp;quot;,&amp;quot;0000FF&amp;quot;,&lt;br /&gt;
            &amp;quot;Blueviolet&amp;quot;,&amp;quot;8A2BE2&amp;quot;,&lt;br /&gt;
            &amp;quot;Brown&amp;quot;,&amp;quot;A52A2A&amp;quot;,&lt;br /&gt;
            &amp;quot;Burlywood&amp;quot;,&amp;quot;DEB887&amp;quot;,&lt;br /&gt;
            &amp;quot;Cadetblue&amp;quot;,&amp;quot;5F9EA0&amp;quot;,&lt;br /&gt;
            &amp;quot;Chartreuse&amp;quot;,&amp;quot;7FFF00&amp;quot;,&lt;br /&gt;
            &amp;quot;Chocolate&amp;quot;,&amp;quot;D2691E&amp;quot;,&lt;br /&gt;
            &amp;quot;Coral&amp;quot;,&amp;quot;FF7F50&amp;quot;,&lt;br /&gt;
            &amp;quot;Cornflowerblue&amp;quot;,&amp;quot;6495ED&amp;quot;,&lt;br /&gt;
            &amp;quot;Cornsilk&amp;quot;,&amp;quot;FFF8DC&amp;quot;,&lt;br /&gt;
            &amp;quot;Crimson&amp;quot;,&amp;quot;DC143C&amp;quot;,&lt;br /&gt;
            &amp;quot;Cyan&amp;quot;,&amp;quot;00FFFF&amp;quot;,&lt;br /&gt;
            &amp;quot;Darkblue&amp;quot;,&amp;quot;00008B&amp;quot;,&lt;br /&gt;
            &amp;quot;Darkcyan&amp;quot;,&amp;quot;008B8B&amp;quot;,&lt;br /&gt;
            &amp;quot;Darkgoldenrod&amp;quot;,&amp;quot;B8860B&amp;quot;,&lt;br /&gt;
            &amp;quot;Darkgray&amp;quot;,&amp;quot;A9A9A9&amp;quot;,&lt;br /&gt;
            &amp;quot;Darkgreen&amp;quot;,&amp;quot;006400&amp;quot;,&lt;br /&gt;
            &amp;quot;Darkkhaki&amp;quot;,&amp;quot;BDB76B&amp;quot;,&lt;br /&gt;
            &amp;quot;Darkmagenta&amp;quot;,&amp;quot;8B008B&amp;quot;,&lt;br /&gt;
            &amp;quot;Darkolivegreen&amp;quot;,&amp;quot;556B2F&amp;quot;,&lt;br /&gt;
            &amp;quot;Darkorange&amp;quot;,&amp;quot;FF8C00&amp;quot;,&lt;br /&gt;
            &amp;quot;Darkorchid&amp;quot;,&amp;quot;9932CC&amp;quot;,&lt;br /&gt;
            &amp;quot;Darkred&amp;quot;,&amp;quot;8B0000&amp;quot;,&lt;br /&gt;
            &amp;quot;Darksalmon&amp;quot;,&amp;quot;E9967A&amp;quot;,&lt;br /&gt;
            &amp;quot;Darkseagreen&amp;quot;,&amp;quot;8FBC8F&amp;quot;,&lt;br /&gt;
            &amp;quot;Darkslateblue&amp;quot;,&amp;quot;483D8B&amp;quot;,&lt;br /&gt;
            &amp;quot;Darkturqoise&amp;quot;,&amp;quot;00CED1&amp;quot;,&lt;br /&gt;
            &amp;quot;Darkslategray&amp;quot;,&amp;quot;2F4F4F&amp;quot;,&lt;br /&gt;
            &amp;quot;Darkviolet&amp;quot;,&amp;quot;9400D3&amp;quot;,&lt;br /&gt;
            &amp;quot;Deeppink&amp;quot;,&amp;quot;FF1493&amp;quot;,&lt;br /&gt;
            &amp;quot;Deepskyblue&amp;quot;,&amp;quot;00BFFF&amp;quot;,&lt;br /&gt;
            &amp;quot;Dimgray&amp;quot;,&amp;quot;696969&amp;quot;,&lt;br /&gt;
            &amp;quot;Dodgerblue&amp;quot;,&amp;quot;1E90FF&amp;quot;,&lt;br /&gt;
            &amp;quot;Firebrick&amp;quot;,&amp;quot;B22222&amp;quot;,&lt;br /&gt;
            &amp;quot;Floralwhite&amp;quot;,&amp;quot;FFFAF0&amp;quot;,&lt;br /&gt;
            &amp;quot;Forestgreen&amp;quot;,&amp;quot;228B22&amp;quot;,&lt;br /&gt;
            &amp;quot;Fuchsia&amp;quot;,&amp;quot;FF00FF&amp;quot;,&lt;br /&gt;
            &amp;quot;Gainsboro&amp;quot;,&amp;quot;DCDCDC&amp;quot;,&lt;br /&gt;
            &amp;quot;Ghostwhite&amp;quot;,&amp;quot;F8F8FF&amp;quot;,&lt;br /&gt;
            &amp;quot;Gold&amp;quot;,&amp;quot;FFD700&amp;quot;,&lt;br /&gt;
            &amp;quot;Goldenrod&amp;quot;,&amp;quot;DAA520&amp;quot;,&lt;br /&gt;
            &amp;quot;Gray&amp;quot;,&amp;quot;808080&amp;quot;,&lt;br /&gt;
            &amp;quot;Green&amp;quot;,&amp;quot;008000&amp;quot;,&lt;br /&gt;
            &amp;quot;Greenyellow&amp;quot;,&amp;quot;ADFF2F&amp;quot;,&lt;br /&gt;
            &amp;quot;Honeydew&amp;quot;,&amp;quot;F0FFF0&amp;quot;,&lt;br /&gt;
            &amp;quot;Hotpink&amp;quot;,&amp;quot;FF69B4&amp;quot;,&lt;br /&gt;
            &amp;quot;Indianred&amp;quot;,&amp;quot;CD5C5C&amp;quot;,&lt;br /&gt;
            &amp;quot;Indigo&amp;quot;,&amp;quot;4B0082&amp;quot;,&lt;br /&gt;
            &amp;quot;Ivory&amp;quot;,&amp;quot;FFFFF0&amp;quot;,&lt;br /&gt;
            &amp;quot;Khaki&amp;quot;,&amp;quot;F0E68C&amp;quot;,&lt;br /&gt;
            &amp;quot;Lavender&amp;quot;,&amp;quot;E6E6FA&amp;quot;,&lt;br /&gt;
            &amp;quot;Lavenderblush&amp;quot;,&amp;quot;FFF0F5&amp;quot;,&lt;br /&gt;
            &amp;quot;Lawngreen&amp;quot;,&amp;quot;7CFC00&amp;quot;,&lt;br /&gt;
            &amp;quot;Lemonchiffon&amp;quot;,&amp;quot;FFFACD&amp;quot;,&lt;br /&gt;
            &amp;quot;Lightblue&amp;quot;,&amp;quot;ADD8E6&amp;quot;,&lt;br /&gt;
            &amp;quot;Lightcoral&amp;quot;,&amp;quot;F08080&amp;quot;,&lt;br /&gt;
            &amp;quot;Lightcyan&amp;quot;,&amp;quot;E0FFFF&amp;quot;,&lt;br /&gt;
            &amp;quot;Lightgoldenrodyellow&amp;quot;,&amp;quot;FAFAD2&amp;quot;,&lt;br /&gt;
            &amp;quot;Lightgreen&amp;quot;,&amp;quot;90EE90&amp;quot;,&lt;br /&gt;
            &amp;quot;Lightgrey&amp;quot;,&amp;quot;D3D3D3&amp;quot;,&lt;br /&gt;
            &amp;quot;Lightpink&amp;quot;,&amp;quot;FFB6C1&amp;quot;,&lt;br /&gt;
            &amp;quot;Lightsalmon&amp;quot;,&amp;quot;FFA07A&amp;quot;,&lt;br /&gt;
            &amp;quot;Lightseagreen&amp;quot;,&amp;quot;20B2AA&amp;quot;,&lt;br /&gt;
            &amp;quot;Lightskyblue&amp;quot;,&amp;quot;87CEFA&amp;quot;,&lt;br /&gt;
            &amp;quot;Lightslategray&amp;quot;,&amp;quot;778899&amp;quot;,&lt;br /&gt;
            &amp;quot;Lisghtsteelblue&amp;quot;,&amp;quot;B0C4DE&amp;quot;,&lt;br /&gt;
            &amp;quot;Lightyellow&amp;quot;,&amp;quot;FFFFE0&amp;quot;,&lt;br /&gt;
            &amp;quot;Lime&amp;quot;,&amp;quot;00FF00&amp;quot;,&lt;br /&gt;
            &amp;quot;Limegreen&amp;quot;,&amp;quot;32CD32&amp;quot;,&lt;br /&gt;
            &amp;quot;Linen&amp;quot;,&amp;quot;FAF0E6&amp;quot;,&lt;br /&gt;
            &amp;quot;Magenta&amp;quot;,&amp;quot;FF00FF&amp;quot;,&lt;br /&gt;
            &amp;quot;Maroon&amp;quot;,&amp;quot;800000&amp;quot;,&lt;br /&gt;
            &amp;quot;Mediumaquamarine&amp;quot;,&amp;quot;66CDAA&amp;quot;,&lt;br /&gt;
            &amp;quot;Mediumblue&amp;quot;,&amp;quot;0000CD&amp;quot;,&lt;br /&gt;
            &amp;quot;Mediumorchid&amp;quot;,&amp;quot;BA55D3&amp;quot;,&lt;br /&gt;
            &amp;quot;Mediumpurple&amp;quot;,&amp;quot;9370DB&amp;quot;,&lt;br /&gt;
            &amp;quot;Mediumseagreen&amp;quot;,&amp;quot;3CB371&amp;quot;,&lt;br /&gt;
            &amp;quot;Mediumslateblue&amp;quot;,&amp;quot;7B68EE&amp;quot;,&lt;br /&gt;
            &amp;quot;Mediumspringgreen&amp;quot;,&amp;quot;00FA9A&amp;quot;,&lt;br /&gt;
            &amp;quot;Mediumturquoise&amp;quot;,&amp;quot;48D1CC&amp;quot;,&lt;br /&gt;
            &amp;quot;Mediumvioletred&amp;quot;,&amp;quot;C71585&amp;quot;,&lt;br /&gt;
            &amp;quot;Midnightblue&amp;quot;,&amp;quot;191970&amp;quot;,&lt;br /&gt;
            &amp;quot;Mintcream&amp;quot;,&amp;quot;F5FFFA&amp;quot;,&lt;br /&gt;
            &amp;quot;Mistyrose&amp;quot;,&amp;quot;FFE4E1&amp;quot;,&lt;br /&gt;
            &amp;quot;Moccasin&amp;quot;,&amp;quot;FFE4B5&amp;quot;,&lt;br /&gt;
            &amp;quot;Navajowhite&amp;quot;,&amp;quot;FFDEAD&amp;quot;,&lt;br /&gt;
            &amp;quot;Navy&amp;quot;,&amp;quot;000080&amp;quot;,&lt;br /&gt;
            &amp;quot;Navyblue&amp;quot;,&amp;quot;9FAFDF&amp;quot;,&lt;br /&gt;
            &amp;quot;Oldlace&amp;quot;,&amp;quot;FDF5E6&amp;quot;,&lt;br /&gt;
            &amp;quot;Olive&amp;quot;,&amp;quot;808000&amp;quot;,&lt;br /&gt;
            &amp;quot;Olivedrab&amp;quot;,&amp;quot;6B8E23&amp;quot;,&lt;br /&gt;
            &amp;quot;Orange&amp;quot;,&amp;quot;FFA500&amp;quot;,&lt;br /&gt;
            &amp;quot;Orangered&amp;quot;,&amp;quot;FF4500&amp;quot;,&lt;br /&gt;
            &amp;quot;Orchid&amp;quot;,&amp;quot;DA70D6&amp;quot;,&lt;br /&gt;
            &amp;quot;Palegoldenrod&amp;quot;,&amp;quot;EEE8AA&amp;quot;,&lt;br /&gt;
            &amp;quot;Palegreen&amp;quot;,&amp;quot;98FB98&amp;quot;,&lt;br /&gt;
            &amp;quot;Paleturquoise&amp;quot;,&amp;quot;AFEEEE&amp;quot;,&lt;br /&gt;
            &amp;quot;Palevioletred&amp;quot;,&amp;quot;DB7093&amp;quot;,&lt;br /&gt;
            &amp;quot;Papayawhip&amp;quot;,&amp;quot;FFEFD5&amp;quot;,&lt;br /&gt;
            &amp;quot;Peachpuff&amp;quot;,&amp;quot;FFDAB9&amp;quot;,&lt;br /&gt;
            &amp;quot;Peru&amp;quot;,&amp;quot;CD853F&amp;quot;,&lt;br /&gt;
            &amp;quot;Pink&amp;quot;,&amp;quot;FFC0CB&amp;quot;,&lt;br /&gt;
            &amp;quot;Plum&amp;quot;,&amp;quot;DDA0DD&amp;quot;,&lt;br /&gt;
            &amp;quot;Powderblue&amp;quot;,&amp;quot;B0E0E6&amp;quot;,&lt;br /&gt;
            &amp;quot;Purple&amp;quot;,&amp;quot;800080&amp;quot;,&lt;br /&gt;
            &amp;quot;Red&amp;quot;,&amp;quot;FF0000&amp;quot;,&lt;br /&gt;
            &amp;quot;Rosybrown&amp;quot;,&amp;quot;BC8F8F&amp;quot;,&lt;br /&gt;
            &amp;quot;Royalblue&amp;quot;,&amp;quot;4169E1&amp;quot;,&lt;br /&gt;
            &amp;quot;Saddlebrown&amp;quot;,&amp;quot;8B4513&amp;quot;,&lt;br /&gt;
            &amp;quot;Salmon&amp;quot;,&amp;quot;FA8072&amp;quot;,&lt;br /&gt;
            &amp;quot;Sandybrown&amp;quot;,&amp;quot;F4A460&amp;quot;,&lt;br /&gt;
            &amp;quot;Seagreen&amp;quot;,&amp;quot;2E8B57&amp;quot;,&lt;br /&gt;
            &amp;quot;Seashell&amp;quot;,&amp;quot;FFF5EE&amp;quot;,&lt;br /&gt;
            &amp;quot;Sienna&amp;quot;,&amp;quot;A0522D&amp;quot;,&lt;br /&gt;
            &amp;quot;Silver&amp;quot;,&amp;quot;C0C0C0&amp;quot;,&lt;br /&gt;
            &amp;quot;Skyblue&amp;quot;,&amp;quot;87CEEB&amp;quot;,&lt;br /&gt;
            &amp;quot;Slateblue&amp;quot;,&amp;quot;6A5ACD&amp;quot;,&lt;br /&gt;
            &amp;quot;Snow&amp;quot;,&amp;quot;FFFAFA&amp;quot;,&lt;br /&gt;
            &amp;quot;Springgreen&amp;quot;,&amp;quot;00FF7F&amp;quot;,&lt;br /&gt;
            &amp;quot;Steelblue&amp;quot;,&amp;quot;4682B4&amp;quot;,&lt;br /&gt;
            &amp;quot;Tan&amp;quot;,&amp;quot;D2B48C&amp;quot;,&lt;br /&gt;
            &amp;quot;Teal&amp;quot;,&amp;quot;008080&amp;quot;,&lt;br /&gt;
            &amp;quot;Thistle&amp;quot;,&amp;quot;D8BFD8&amp;quot;,&lt;br /&gt;
            &amp;quot;Tomato&amp;quot;,&amp;quot;FF6347&amp;quot;,&lt;br /&gt;
            &amp;quot;Turquoise&amp;quot;,&amp;quot;40E0D0&amp;quot;,&lt;br /&gt;
            &amp;quot;Violet&amp;quot;,&amp;quot;EE82EE&amp;quot;,&lt;br /&gt;
            &amp;quot;Wheat&amp;quot;,&amp;quot;F5DEB3&amp;quot;,&lt;br /&gt;
            &amp;quot;White&amp;quot;,&amp;quot;FFFFFF&amp;quot;,&lt;br /&gt;
            &amp;quot;Whitesmoke&amp;quot;,&amp;quot;F5F5F5&amp;quot;,&lt;br /&gt;
            &amp;quot;Yellow&amp;quot;,&amp;quot;FFFF00&amp;quot;,&lt;br /&gt;
            &amp;quot;Yellowgreen&amp;quot;,&amp;quot;9ACD32&amp;quot;};&lt;br /&gt;
    &lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Convert HSB to RGB value ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;   &lt;br /&gt;
&lt;br /&gt;
import java.awt.Color;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main() {&lt;br /&gt;
    float hue = 12; &lt;br /&gt;
    float saturation = 13;&lt;br /&gt;
    float brightness = 14;&lt;br /&gt;
    &lt;br /&gt;
    int rgb = Color.HSBtoRGB(hue, saturation, brightness);&lt;br /&gt;
    int red = (rgb &amp;gt;&amp;gt; 16) &amp;amp; 0xFF;&lt;br /&gt;
    int green = (rgb &amp;gt;&amp;gt; 8) &amp;amp; 0xFF;&lt;br /&gt;
    int blue = rgb &amp;amp; 0xFF;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Convert RGB to HSB ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;   &lt;br /&gt;
import java.awt.Color;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main() {&lt;br /&gt;
    int red = 23;&lt;br /&gt;
    int green = 66;&lt;br /&gt;
    int blue = 99;&lt;br /&gt;
    float[] hsb = Color.RGBtoHSB(red, green, blue, null);&lt;br /&gt;
    float hue = hsb[0]; &lt;br /&gt;
    float saturation = hsb[1];&lt;br /&gt;
    float brightness = hsb[2];&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Image Color Effect: Brightness, Contrast, Negative ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;   &lt;br /&gt;
import java.awt.BorderLayout;&lt;br /&gt;
import java.awt.Color;&lt;br /&gt;
import java.awt.Container;&lt;br /&gt;
import java.awt.Graphics;&lt;br /&gt;
import java.awt.Graphics2D;&lt;br /&gt;
import java.awt.GridLayout;&lt;br /&gt;
import java.awt.Image;&lt;br /&gt;
import java.awt.MediaTracker;&lt;br /&gt;
import java.awt.Toolkit;&lt;br /&gt;
import java.awt.event.ActionEvent;&lt;br /&gt;
import java.awt.event.ActionListener;&lt;br /&gt;
import java.awt.event.WindowAdapter;&lt;br /&gt;
import java.awt.event.WindowEvent;&lt;br /&gt;
import java.awt.image.BufferedImage;&lt;br /&gt;
import java.awt.image.ByteLookupTable;&lt;br /&gt;
import java.awt.image.LookupOp;&lt;br /&gt;
import java.awt.image.LookupTable;&lt;br /&gt;
import java.awt.image.ShortLookupTable;&lt;br /&gt;
import javax.swing.JButton;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
import javax.swing.border.TitledBorder;&lt;br /&gt;
public class ColorApp extends JFrame {&lt;br /&gt;
  DisplayPanel displayPanel;&lt;br /&gt;
  JButton brightenButton, darkenButton, contrastIncButton, contrastDecButton,&lt;br /&gt;
      reverseButton, resetButton;&lt;br /&gt;
  public ColorApp() {&lt;br /&gt;
    super();&lt;br /&gt;
    Container container = getContentPane();&lt;br /&gt;
    displayPanel = new DisplayPanel();&lt;br /&gt;
    container.add(displayPanel);&lt;br /&gt;
    JPanel panel = new JPanel();&lt;br /&gt;
    panel.setLayout(new GridLayout(3, 2));&lt;br /&gt;
    panel&lt;br /&gt;
        .setBorder(new TitledBorder(&lt;br /&gt;
            &amp;quot;Click a Button to Perform the Associated Operation and Reset...&amp;quot;));&lt;br /&gt;
    brightenButton = new JButton(&amp;quot;Brightness &amp;gt;&amp;gt;&amp;quot;);&lt;br /&gt;
    brightenButton.addActionListener(new ButtonListener());&lt;br /&gt;
    darkenButton = new JButton(&amp;quot;Darkness &amp;gt;&amp;gt;&amp;quot;);&lt;br /&gt;
    darkenButton.addActionListener(new ButtonListener());&lt;br /&gt;
    contrastIncButton = new JButton(&amp;quot;Contrast &amp;gt;&amp;gt;&amp;quot;);&lt;br /&gt;
    contrastIncButton.addActionListener(new ButtonListener());&lt;br /&gt;
    contrastDecButton = new JButton(&amp;quot;Contrast &amp;lt;&amp;lt;&amp;quot;);&lt;br /&gt;
    contrastDecButton.addActionListener(new ButtonListener());&lt;br /&gt;
    reverseButton = new JButton(&amp;quot;Negative&amp;quot;);&lt;br /&gt;
    reverseButton.addActionListener(new ButtonListener());&lt;br /&gt;
    resetButton = new JButton(&amp;quot;Reset&amp;quot;);&lt;br /&gt;
    resetButton.addActionListener(new ButtonListener());&lt;br /&gt;
    panel.add(brightenButton);&lt;br /&gt;
    panel.add(darkenButton);&lt;br /&gt;
    panel.add(contrastIncButton);&lt;br /&gt;
    panel.add(contrastDecButton);&lt;br /&gt;
    panel.add(reverseButton);&lt;br /&gt;
    panel.add(resetButton);&lt;br /&gt;
    container.add(BorderLayout.SOUTH, panel);&lt;br /&gt;
    addWindowListener(new WindowEventHandler());&lt;br /&gt;
    setSize(displayPanel.getWidth(), displayPanel.getHeight() + 25);&lt;br /&gt;
    show();&lt;br /&gt;
  }&lt;br /&gt;
  class WindowEventHandler extends WindowAdapter {&lt;br /&gt;
    public void windowClosing(WindowEvent e) {&lt;br /&gt;
      System.exit(0);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String arg[]) {&lt;br /&gt;
    new ColorApp();&lt;br /&gt;
  }&lt;br /&gt;
  class ButtonListener implements ActionListener {&lt;br /&gt;
    public void actionPerformed(ActionEvent e) {&lt;br /&gt;
      JButton button = (JButton) e.getSource();&lt;br /&gt;
      if (button.equals(brightenButton)) {&lt;br /&gt;
        displayPanel.brightenLUT();&lt;br /&gt;
        displayPanel.applyFilter();&lt;br /&gt;
        displayPanel.repaint();&lt;br /&gt;
      } else if (button.equals(darkenButton)) {&lt;br /&gt;
        displayPanel.darkenLUT();&lt;br /&gt;
        displayPanel.applyFilter();&lt;br /&gt;
        displayPanel.repaint();&lt;br /&gt;
      } else if (button.equals(contrastIncButton)) {&lt;br /&gt;
        displayPanel.contrastIncLUT();&lt;br /&gt;
        displayPanel.applyFilter();&lt;br /&gt;
        displayPanel.repaint();&lt;br /&gt;
      } else if (button.equals(contrastDecButton)) {&lt;br /&gt;
        displayPanel.contrastDecLUT();&lt;br /&gt;
        displayPanel.applyFilter();&lt;br /&gt;
        displayPanel.repaint();&lt;br /&gt;
      } else if (button.equals(reverseButton)) {&lt;br /&gt;
        displayPanel.reverseLUT();&lt;br /&gt;
        displayPanel.applyFilter();&lt;br /&gt;
        displayPanel.repaint();&lt;br /&gt;
      } else if (button.equals(resetButton)) {&lt;br /&gt;
        displayPanel.reset();&lt;br /&gt;
        displayPanel.repaint();&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class DisplayPanel extends JPanel {&lt;br /&gt;
  Image displayImage;&lt;br /&gt;
  BufferedImage bi;&lt;br /&gt;
  Graphics2D big;&lt;br /&gt;
  LookupTable lookupTable;&lt;br /&gt;
  DisplayPanel() {&lt;br /&gt;
    setBackground(Color.black); // panel background color&lt;br /&gt;
    loadImage();&lt;br /&gt;
    setSize(displayImage.getWidth(this), displayImage.getWidth(this)); // panel&lt;br /&gt;
    createBufferedImage();&lt;br /&gt;
  }&lt;br /&gt;
  public void loadImage() {&lt;br /&gt;
    displayImage = Toolkit.getDefaultToolkit().getImage(&lt;br /&gt;
        &amp;quot;largejexpLogo.jpg&amp;quot;);&lt;br /&gt;
    MediaTracker mt = new MediaTracker(this);&lt;br /&gt;
    mt.addImage(displayImage, 1);&lt;br /&gt;
    try {&lt;br /&gt;
      mt.waitForAll();&lt;br /&gt;
    } catch (Exception e) {&lt;br /&gt;
      System.out.println(&amp;quot;Exception while loading.&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    if (displayImage.getWidth(this) == -1) {&lt;br /&gt;
      System.out.println(&amp;quot;No jpg file&amp;quot;);&lt;br /&gt;
      System.exit(0);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public void createBufferedImage() {&lt;br /&gt;
    bi = new BufferedImage(displayImage.getWidth(this), displayImage&lt;br /&gt;
        .getHeight(this), BufferedImage.TYPE_INT_ARGB);&lt;br /&gt;
    big = bi.createGraphics();&lt;br /&gt;
    big.drawImage(displayImage, 0, 0, this);&lt;br /&gt;
  }&lt;br /&gt;
  public void brightenLUT() {&lt;br /&gt;
    short brighten[] = new short[256];&lt;br /&gt;
    for (int i = 0; i &amp;lt; 256; i++) {&lt;br /&gt;
      short pixelValue = (short) (i + 10);&lt;br /&gt;
      if (pixelValue &amp;gt; 255)&lt;br /&gt;
        pixelValue = 255;&lt;br /&gt;
      else if (pixelValue &amp;lt; 0)&lt;br /&gt;
        pixelValue = 0;&lt;br /&gt;
      brighten[i] = pixelValue;&lt;br /&gt;
    }&lt;br /&gt;
    lookupTable = new ShortLookupTable(0, brighten);&lt;br /&gt;
  }&lt;br /&gt;
  public void darkenLUT() {&lt;br /&gt;
    short brighten[] = new short[256];&lt;br /&gt;
    for (int i = 0; i &amp;lt; 256; i++) {&lt;br /&gt;
      short pixelValue = (short) (i - 10);&lt;br /&gt;
      if (pixelValue &amp;gt; 255)&lt;br /&gt;
        pixelValue = 255;&lt;br /&gt;
      else if (pixelValue &amp;lt; 0)&lt;br /&gt;
        pixelValue = 0;&lt;br /&gt;
      brighten[i] = pixelValue;&lt;br /&gt;
    }&lt;br /&gt;
    lookupTable = new ShortLookupTable(0, brighten);&lt;br /&gt;
  }&lt;br /&gt;
  public void contrastIncLUT() {&lt;br /&gt;
    short brighten[] = new short[256];&lt;br /&gt;
    for (int i = 0; i &amp;lt; 256; i++) {&lt;br /&gt;
      short pixelValue = (short) (i * 1.2);&lt;br /&gt;
      if (pixelValue &amp;gt; 255)&lt;br /&gt;
        pixelValue = 255;&lt;br /&gt;
      else if (pixelValue &amp;lt; 0)&lt;br /&gt;
        pixelValue = 0;&lt;br /&gt;
      brighten[i] = pixelValue;&lt;br /&gt;
    }&lt;br /&gt;
    lookupTable = new ShortLookupTable(0, brighten);&lt;br /&gt;
  }&lt;br /&gt;
  public void contrastDecLUT() {&lt;br /&gt;
    short brighten[] = new short[256];&lt;br /&gt;
    for (int i = 0; i &amp;lt; 256; i++) {&lt;br /&gt;
      short pixelValue = (short) (i / 1.2);&lt;br /&gt;
      if (pixelValue &amp;gt; 255)&lt;br /&gt;
        pixelValue = 255;&lt;br /&gt;
      else if (pixelValue &amp;lt; 0)&lt;br /&gt;
        pixelValue = 0;&lt;br /&gt;
      brighten[i] = pixelValue;&lt;br /&gt;
    }&lt;br /&gt;
    lookupTable = new ShortLookupTable(0, brighten);&lt;br /&gt;
  }&lt;br /&gt;
  public void reverseLUT() {&lt;br /&gt;
    byte reverse[] = new byte[256];&lt;br /&gt;
    for (int i = 0; i &amp;lt; 256; i++) {&lt;br /&gt;
      reverse[i] = (byte) (255 - i);&lt;br /&gt;
    }&lt;br /&gt;
    lookupTable = new ByteLookupTable(0, reverse);&lt;br /&gt;
  }&lt;br /&gt;
  public void reset() {&lt;br /&gt;
    big.setColor(Color.black);&lt;br /&gt;
    big.clearRect(0, 0, bi.getWidth(this), bi.getHeight(this));&lt;br /&gt;
    big.drawImage(displayImage, 0, 0, this);&lt;br /&gt;
  }&lt;br /&gt;
    public void applyFilter() {&lt;br /&gt;
    LookupOp lop = new LookupOp(lookupTable, null);&lt;br /&gt;
    lop.filter(bi, bi);&lt;br /&gt;
  }&lt;br /&gt;
  public void update(Graphics g) {&lt;br /&gt;
    g.clearRect(0, 0, getWidth(), getHeight());&lt;br /&gt;
    paintComponent(g);&lt;br /&gt;
  }&lt;br /&gt;
  public void paintComponent(Graphics g) {&lt;br /&gt;
    super.paintComponent(g);&lt;br /&gt;
    Graphics2D g2D = (Graphics2D) g;&lt;br /&gt;
    g2D.drawImage(bi, 0, 0, this);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
         &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== IndexColorModel ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;   &lt;br /&gt;
import java.awt.Color;&lt;br /&gt;
import java.awt.image.ColorModel;&lt;br /&gt;
import java.awt.image.IndexColorModel;&lt;br /&gt;
public class IndexTest {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    byte ff = (byte) 0xff;&lt;br /&gt;
    byte[] r = { ff, 0, 0, ff, 0 };&lt;br /&gt;
    byte[] g = { 0, ff, 0, ff, 0 };&lt;br /&gt;
    byte[] b = { 0, 0, ff, ff, 0 };&lt;br /&gt;
    ColorModel cm = new IndexColorModel(3, 5, r, g, b);&lt;br /&gt;
    Color[] colors = { new Color(255, 0, 0), new Color(0, 255, 0),&lt;br /&gt;
        new Color(0, 0, 255), new Color(64, 255, 64),&lt;br /&gt;
        new Color(255, 255, 0), new Color(0, 255, 255) };&lt;br /&gt;
    for (int i = 0; i &amp;lt; colors.length; i++) {&lt;br /&gt;
      float[] normalizedComponents = colors[i].getComponents(null);&lt;br /&gt;
      int[] unnormalizedComponents = cm.getUnnormalizedComponents(&lt;br /&gt;
          normalizedComponents, 0, null, 0);&lt;br /&gt;
      int rgb = colors[i].getRGB();&lt;br /&gt;
      Object pixel = cm.getDataElements(rgb, null);&lt;br /&gt;
      System.out.println(colors[i] + &amp;quot; -&amp;gt; &amp;quot; + ((byte[]) pixel)[0]);&lt;br /&gt;
    }&lt;br /&gt;
    for (byte i = 0; i &amp;lt; 5; i++) {&lt;br /&gt;
      int[] unnormalizedComponents = cm.getComponents(i, null, 0);&lt;br /&gt;
      System.out.print(i + &amp;quot; -&amp;gt; unnormalized components&amp;quot;);&lt;br /&gt;
      for (int j = 0; j &amp;lt; unnormalizedComponents.length; j++)&lt;br /&gt;
        System.out.print(&amp;quot; &amp;quot; + unnormalizedComponents[j]);&lt;br /&gt;
      System.out.println();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
         &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== RGB Gray Filter ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;   &lt;br /&gt;
/*&lt;br /&gt;
 * Copyright (c) 2001-2009 JGoodies Karsten Lentzsch. All Rights Reserved.&lt;br /&gt;
 *&lt;br /&gt;
 * Redistribution and use in source and binary forms, with or without&lt;br /&gt;
 * modification, are permitted provided that the following conditions are met:&lt;br /&gt;
 *&lt;br /&gt;
 *  o Redistributions of source code must retain the above copyright notice,&lt;br /&gt;
 *    this list of conditions and the following disclaimer.&lt;br /&gt;
 *&lt;br /&gt;
 *  o Redistributions in binary form must reproduce the above copyright notice,&lt;br /&gt;
 *    this list of conditions and the following disclaimer in the documentation&lt;br /&gt;
 *    and/or other materials provided with the distribution.&lt;br /&gt;
 *&lt;br /&gt;
 *  o Neither the name of JGoodies Karsten Lentzsch nor the names of&lt;br /&gt;
 *    its contributors may be used to endorse or promote products derived&lt;br /&gt;
 *    from this software without specific prior written permission.&lt;br /&gt;
 *&lt;br /&gt;
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &amp;quot;AS IS&amp;quot;&lt;br /&gt;
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,&lt;br /&gt;
 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR&lt;br /&gt;
 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR&lt;br /&gt;
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,&lt;br /&gt;
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,&lt;br /&gt;
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;&lt;br /&gt;
 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,&lt;br /&gt;
 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE&lt;br /&gt;
 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,&lt;br /&gt;
 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import java.awt.Image;&lt;br /&gt;
import java.awt.image.*;&lt;br /&gt;
import javax.swing.GrayFilter;&lt;br /&gt;
import javax.swing.Icon;&lt;br /&gt;
import javax.swing.ImageIcon;&lt;br /&gt;
import javax.swing.JComponent;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * An image filter that turns an icon into a grayscale icon. Used by&lt;br /&gt;
 * the JGoodies Windows and Plastic L&amp;amp;amp;Fs to create a disabled icon.&amp;lt;p&amp;gt;&lt;br /&gt;
 *&lt;br /&gt;
 * The high-resolution gray filter can be disabled globally using&lt;br /&gt;
 * {@link Options#setHiResGrayFilterEnabled(boolean)}; it is enabled by default.&lt;br /&gt;
 * The global setting can be overridden per component by setting&lt;br /&gt;
 * the client property key {@link Options#HI_RES_DISABLED_ICON_CLIENT_KEY}&lt;br /&gt;
 * to &amp;lt;code&amp;gt;Boolean.FALSE&amp;lt;/code&amp;gt;.&amp;lt;p&amp;gt;&lt;br /&gt;
 *&lt;br /&gt;
 * Thanks to Andrej Golovnin for suggesting a simpler filter formula.&lt;br /&gt;
 *&lt;br /&gt;
 * @author Karsten Lentzsch&lt;br /&gt;
 * @version $Revision: 1.10 $&lt;br /&gt;
 */&lt;br /&gt;
public final class RGBGrayFilter extends RGBImageFilter {&lt;br /&gt;
    /**&lt;br /&gt;
     * Overrides default constructor; prevents instantiation.&lt;br /&gt;
     */&lt;br /&gt;
    private RGBGrayFilter() {&lt;br /&gt;
        canFilterIndexColorModel = true;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * Returns an icon with a disabled appearance. This method is used&lt;br /&gt;
     * to generate a disabled icon when one has not been specified.&lt;br /&gt;
     *&lt;br /&gt;
     * @param component the component that will display the icon, may be null.&lt;br /&gt;
     * @param icon the icon to generate disabled icon from.&lt;br /&gt;
     * @return disabled icon, or null if a suitable icon can not be generated.&lt;br /&gt;
     */&lt;br /&gt;
    public static Icon getDisabledIcon(JComponent component, Icon icon) {&lt;br /&gt;
        if (   (icon == null)&lt;br /&gt;
            || (component == null)&lt;br /&gt;
            || (icon.getIconWidth() == 0)&lt;br /&gt;
            || (icon.getIconHeight() == 0)) {&lt;br /&gt;
            return null;&lt;br /&gt;
        }&lt;br /&gt;
        Image img;&lt;br /&gt;
        if (icon instanceof ImageIcon) {&lt;br /&gt;
            img = ((ImageIcon) icon).getImage();&lt;br /&gt;
        } else {&lt;br /&gt;
            img = new BufferedImage(&lt;br /&gt;
                    icon.getIconWidth(),&lt;br /&gt;
                    icon.getIconHeight(),&lt;br /&gt;
                    BufferedImage.TYPE_INT_ARGB);&lt;br /&gt;
            icon.paintIcon(component, img.getGraphics(), 0, 0);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        ImageProducer producer =&lt;br /&gt;
            new FilteredImageSource(img.getSource(), new RGBGrayFilter());&lt;br /&gt;
        return new ImageIcon(component.createImage(producer));&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * Converts a single input pixel in the default RGB ColorModel to a single&lt;br /&gt;
     * gray pixel.&lt;br /&gt;
     *&lt;br /&gt;
     * @param x    the horizontal pixel coordinate&lt;br /&gt;
     * @param y    the vertical pixel coordinate&lt;br /&gt;
     * @param rgb  the integer pixel representation in the default RGB color model&lt;br /&gt;
     * @return a gray pixel in the default RGB color model.&lt;br /&gt;
     *&lt;br /&gt;
     * @see ColorModel#getRGBdefault&lt;br /&gt;
     * @see #filterRGBPixels&lt;br /&gt;
     */&lt;br /&gt;
    public int filterRGB(int x, int y, int rgb) {&lt;br /&gt;
        // Find the average of red, green, and blue.&lt;br /&gt;
        float avg = (((rgb &amp;gt;&amp;gt; 16) &amp;amp; 0xff) / 255f +&lt;br /&gt;
                     ((rgb &amp;gt;&amp;gt;  8) &amp;amp; 0xff) / 255f +&lt;br /&gt;
                      (rgb        &amp;amp; 0xff) / 255f) / 3;&lt;br /&gt;
        // Pull out the alpha channel.&lt;br /&gt;
        float alpha = (((rgb &amp;gt;&amp;gt; 24) &amp;amp; 0xff) / 255f);&lt;br /&gt;
        // Calculate the average.&lt;br /&gt;
        // Sun&amp;quot;s formula: Math.min(1.0f, (1f - avg) / (100.0f / 35.0f) + avg);&lt;br /&gt;
        // The following formula uses less operations and hence is faster.&lt;br /&gt;
        avg = Math.min(1.0f, 0.35f + 0.65f * avg);&lt;br /&gt;
        // Convert back into RGB.&lt;br /&gt;
       return (int) (alpha * 255f) &amp;lt;&amp;lt; 24 |&lt;br /&gt;
              (int) (avg   * 255f) &amp;lt;&amp;lt; 16 |&lt;br /&gt;
              (int) (avg   * 255f) &amp;lt;&amp;lt; 8  |&lt;br /&gt;
              (int) (avg   * 255f);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
			</entry>

	</feed>