To paint any Java Component (including VisAD widgets) to an image, you should
be able to do something like the following (although I haven't tested it):
SelectRangeWidget srw = ...;
Dimension size = srw.getSize();
Image img = srw.createImage(size.width, size.height);
Graphics g = img.getGraphics();
Now, img contains a snapshot of the component. You can combine multiple images
BufferedImage image1 = display2.getImage();
BufferedImage image2 = (BufferedImage) img;
int type = image1.getType();
int w1 = image1.getWidth();
int h1 = image1.getHeight();
int w2 = image2.getWidth();
int h2 = image2.getHeight();
BufferedImage image = new BufferedImage(w1 > w2 ? w1 : w2, h1 + h2, type);
Graphics g = img.createGraphics();
g.drawImage(image1, 0, 0, null);
g.drawImage(image2, 0, h1, null);
Then save to disk with:
FileSaver saver = new FileSaver(new ImagePlus("null", image));
saver.saveAsTiff(file); // save in TIFF file format
saver.saveAsJpeg(file); // save in JPEG file format
saver.saveAsRaw(file); // save in RAW file format
Hope this helps.
At 12:54 PM 9/4/2002, Carlos Pleguezuelos wrote:
>That is not the problem. I want to make a GIF file (making first a
>BufferedImage) with the display image (using getImage method) and the color
>scale of the LabeledRGBWidget.
>This widget is built of 4 widgets. I have modified the code so I can get the
>color table, the arrow and the label widget.
>Im able to paste different BufferedImage, but calling createImage method of
>Component the only thing I get is an empty Image, so I cant get the Image from
>these three widgets.
>There is a way of do it using a Robot, but Im trying to avoid using it (due to
>If anybody had the same problem, please show me the solution...
>Bill Hibbard wrote:
>>>My question is: I got a a DisplayImplJ2D with a RealType mapped to RGB.
>>>I got a LabeledRGBWidget controlling this map.
>>>Im able to write the display image to disc, but I want to take the color
>>>scale of the LabeledRGBWidget to the same image, so I can get a GIF file
>>>with the display and the scale.
>>>I dont know how to do it, and even if I can do it, so a little help is
>>You can get the color table as follows:
>> ScalarMap rgbMap = new ScalarMap(..., Display.RGB);
>> . . .
>> ColorControl control = (ColorControl) rgbMap.getControl();
>> float table = control.getTable();
>> // now save the table with the image
>>I don't know enough about your file format to know how
>>you'd save the color table, but at least this code shows
>>you how to get the table information from VisAD.