BufferedImage cat = ImageIO.read(new File("cat.jpg")); //read existing file
//modify it
Graphics g = cat.createGraphics();
g.setColor(Color.RED);
g.drawString("Cat", 10, 10);
g.dispose();
//now create a new image
BufferedImage cats = new BufferedImage(256, 256, BufferedImage.TYPE_4BYTE_ABGR);
//and draw the old one on it, 16 times
g = cats.createGraphics();
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
g.drawImage(cat, i * 64, j * 64, null);
}
}
g.setColor(Color.BLUE);
g.drawRect(0, 0, 255, 255); //add some nice border
g.dispose(); //and done
ImageIO.write(cats, "png", new File("cats.png"));
Original cat file:
Produced file: