Hi Carlos,
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();
srw.paint(g);
g.dispose();
Now, img contains a snapshot of the component. You can combine multiple images
vertically with:
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);
g.dispose();
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.
-Curtis
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
>Applet security).
>
>
>If anybody had the same problem, please show me the solution...
>
>
>Thanks again.....
>
>
>Bill Hibbard wrote:
>>
>>Hi Carlos,
>>
>>>
>>>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
>>>needed!! ;-)
>>
>>
>>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.
>>
>>Good luck,
>>Bill
>>