Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Convert JPanel to image

Is there a way to convert a JPanel (that has not yet been displayed) to a BufferedImage?

thanks,

Jeff

like image 995
Jeff Storey Avatar asked Aug 28 '09 20:08

Jeff Storey


1 Answers

From the BufferedImage you can create a graphics object, which you can use to call paint on the JPanel, something like:

public BufferedImage createImage(JPanel panel) {

    int w = panel.getWidth();
    int h = panel.getHeight();
    BufferedImage bi = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
    Graphics2D g = bi.createGraphics();
    panel.paint(g);
    g.dispose();
    return bi;
}

You may need to make sure you set the size of the panel first.

like image 189
Tom Avatar answered Oct 15 '22 00:10

Tom