# Inhalt eines JXPanels als BufferedImage ausgeben



## Guadrion (5. August 2009)

Hi Ihr,
und zwar hab ich folgendes Problem. Ich  möchte den inhalt eines JXMapKit als BufferedImage ausgeben. 
Dazu habe ich folgendes geschrieben:

JMapKit kit = new JMapKit(); //abgeleitet von JXPanel
Buffered Image screenshot = this.kit.getGraphicsConfiguration().createCompatibleImage(getWidth(), getHeight());

Hiermit sollte man ja eigetnlich den Inhalt dieser Komponente in ein BufferedImage schrieben können, allerdings ist dieses Bild, wenn ich es dann in eine Datei schreibe, jedesmal schwarz und eigentlihc sollte eine deutschland karte zu sehen sein..

VG
marc


----------



## ChrisRa (19. August 2009)

Hallo Marc,

ich habe das gleiche Problem.
public BufferedImage saveBufferedImage(JXMapKit jXMapkit1  ) {
JXMapViewer map = jXMapkit1.getMainMap();
int height = map.getBounds().height;
    	int width = map.getBounds().width;

    	log.info( "width = " + width + " height = " + height );

    	BufferedImage buf = map.getGraphicsConfiguration().createCompatibleImage(width, height);
    	if (buf == null) 
    	buf = new BufferedImage( width , height, BufferedImage.TYPE_INT_RGB);

    	// Copy image to buffered image
    	Graphics2D g = buf.createGraphics();
     	// Paint the image onto the buffered image
jXMapKit1.paintAll(g);

   	log.info( "draw: " + g.drawImage( map.createImage( width, height) , 0, 0, null));

    	try
    	{
    	boolean b = ImageIO.write( buf, "jpg", new File("map.jpg") );
    	}
    	catch( Exception e )
    	{}
    	return buf;
    	} 

Dies funktioniert auch nicht.
Ich habe keine Idee mehr.
mfg
Christian


----------



## ChrisRa (20. August 2009)

Hallo ,


hat keiner hier eine Idee ? Hilfe!


mfg
Christian


----------



## Guadrion (23. August 2009)

Hi also ich hab die Macher von JXMapViewer angeschrieben und folgendes auf ihren Rat hin gemacht, funktioniert bei mir auch! der JXMapViewer muss halt visible in dem Moment sein und alle Tiles geladen haben, dass der Screenshot richtig is

```
public void takeScreenshot() {
		int screenshot_width = kit.getSize().width;
		int screenshot_height = kit.getSize().height;
		screenshot = new BufferedImage(screenshot_width, screenshot_height,
				BufferedImage.TYPE_INT_ARGB);
		Graphics2D g2d = screenshot.createGraphics();;
		kit.paintComponents(g2d);
		g2d.dispose();
		try {
			ImageIO.write(screenshot, "png", new File("screenshot.png"));
		} catch (IOException e) {
		}
	}
```

VG
Marc


----------

