создайте BufferedImage с запрошенным размером для получения изображения.
Получите Graphics2D для рисования на этом изображении и позвольте JPanel рисовать на нем.
JPanel panel = ...
BufferedImage image = new BufferedImage(200, 200, TYPE_INT_ARGB);
Graphics2D gg = image.createGraphics();
try {
gg.translate(-100, -20); // start point of region negated
panel.paint(gg);
} finally {
gg.dispose();
}