package display.surrogate; import java.awt.RenderingHints; import java.awt.image.ColorModel; import java.awt.image.IndexColorModel; import java.awt.image.RenderedImage; import java.awt.image.renderable.ParameterBlock; import java.util.HashMap; import javax.media.jai.ImageLayout; import javax.media.jai.JAI; import javax.media.jai.PlanarImage; /** * This class extends the DisplayNBImage class to allow the setting of a false-color * LUT to the displayed image. */ public class DisplayNBImageWithLUTs extends DisplayNBImage { /** * The constructor for the class, which calls the constructor for its ancestral class. */ public DisplayNBImageWithLUTs(RenderedImage image) { super(image); } /** * This method sets a look-up-table for the surrogate image, converting it to an image with a * color model. */ public void setLUT(short[][] colors) { // Now we convert the color array (which data type is short) into three // separate byte arrays. We always assume that the LUT has 256 entries. byte[] reds = new byte[256]; byte[] greens = new byte[256]; byte[] blues = new byte[256]; for(int i=0;i<256;i++) { reds[i] = (byte)colors[i][0]; greens[i] = (byte)colors[i][1]; blues[i] = (byte)colors[i][2]; } // Create an IndexColorModel using the arrays above. ColorModel colorModel = new IndexColorModel(8,256,reds,greens,blues); // To change the color model of the surrogate image, we need to create a new // image layout based on the image, and change the layout's color model. ImageLayout layout = new ImageLayout(surrogateImage); layout.setColorModel(colorModel); // In order to change the image layout we need to set its rendering hints. HashMap<RenderingHints.Key,ImageLayout> map = new HashMap<RenderingHints.Key,ImageLayout>(); map.put(JAI.KEY_IMAGE_LAYOUT,layout); RenderingHints hints = new RenderingHints(map); // Reformat the image using the above hints. ParameterBlock pb = new ParameterBlock(); pb.addSource(surrogateImage); // We don't really want to change the original surrogate image... PlanarImage newSurrogateImage = JAI.create("format",pb,hints); // Set the new, LUT-applied image. set(newSurrogateImage); } }
"Learning gives Creativity,Creativity leads to Thinking, Thinking provides Knowledge, Knowledge makes you Great"
Friday, 16 August 2013
Create RenderImage based on BufferedImage
Subscribe to:
Post Comments (Atom)
RELATED POSTS
No comments:
Post a Comment