Вы должны делать это
BufferedImage img = new BufferedImage(
w, h, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d = img.createGraphics();
g2d.drawImage(photo, 0, 0, null);
g2d.setPaint(Color.red);
//example : g2d.setFont(new Font("Serif", Font.BOLD, 15));
g2d.setFont(new Font(fontName, Font.BOLD, size));
String s = "Hello, world!";
// assuming x & y is set using graphic's font metrics
g2d.drawString(s, x, y);
g2d.dispose();
Выдержка из документации на солнце
GetGraphics
public Graphics getGraphics () Это
метод возвращает Graphics2D, но
здесь для обратной совместимости.
создавать графику удобнее,
так как он объявлен, чтобы вернуть
Graphics2D.
Это на самом деле не означает, что вы не должны использовать getGraphics
API. Просто этот код работал для меня:)