Inhalt eines JXPanels als BufferedImage ausgeben

Guadrion

Mitglied
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
 
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
 
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
Code:
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
 

Neue Beiträge

Zurück