|
|
|
Re: Convert AWT image to SWT image [message #435882 is a reply to message #435094] |
Wed, 05 May 2004 19:33 |
Stefan Zeiger Messages: 102 Registered: July 2009 |
Senior Member |
|
|
Joseph wrote:
> I have seen tips on converting SWT image to AWT image, but still
> don't know how to do the reverse conversion.
This works for me:
private static Image makeSWTImage(Display display, java.awt.Image ai)
throws Exception
{
int width = ai.getWidth(null);
int height = ai.getHeight(null);
BufferedImage bufferedImage =
new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics2D g2d = bufferedImage.createGraphics();
g2d.drawImage(ai, 0, 0, null);
g2d.dispose();
int[] data =
((DataBufferInt)bufferedImage.getData().getDataBuffer())
.getData();
ImageData imageData =
new ImageData(width, height, 24,
new PaletteData(0xFF0000, 0x00FF00, 0x0000FF));
imageData.setPixels(0, 0, data.length, data, 0);
Image swtImage = new Image(display, imageData);
return swtImage;
}
Unfortunately it's quite slow because the image data has to be copied
instead of sharing a buffer between SWT and AWT. The latter would
require native code. Even without a shared buffer, loading a (JPEG)
image with AWT and converting it to a SWT image is faster than loading
it directly with SWT :-/
--
Stefan Zeiger http://www.szeiger.de http://www.novocode.com
My SWT controls: http://www.novocode.com/swt
|
|
|
Powered by
FUDForum. Page generated in 0.02652 seconds