querias usar da maneira q foi usado num projeto para renderizar as imagens das sprits game mas não entendo muito bem tenho uma baita dificuldade com inserção de imagem. o código e brande para postar aqui mas vou botar algo (nem todo código vai interessa aqui mas e para terem uma noção do q queria utilizar)…
//; variaveis
public JFrame frame;
public static final int WIDTH = 480;
public static final int HEIGHT = 320;
public static final int SCALE = 2;
public int fps = 0;
private Thread thread;
private boolean isRunning;
private BufferedImage image;
public static List entities;
public static List inimigos;
public static List tiros;
public static SpriteSheet spriteSheet;
public static Player player;
public static World world;
public static Random rand; // Foi criado na classe Game por que dai pode
//ser usado sempre q quiser, nao precisa ficar criando instancias.
public UI ui;
	public Game() {
		rand = new Random();
		this.addKeyListener(this);
		initFrame();
		// inicializando objetos
		ui = new UI();
		image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);
		// import Araylist da biblioteca java.util!
		entities = new ArrayList<Entity>();
		inimigos = new ArrayList<Inimigos>();
		tiros = new ArrayList<Tiros>();
		spriteSheet = new SpriteSheet("/Spryte32Pixels.png"); // importante!
		player = new Player(0, 0, 32, 32, spriteSheet.getSpriteSheet(0, 0, 32, 32));
		entities.add(player);
		world = new World("/miniMapa.png");
	
	}
/// metodo  render q esta na classe principal!!!
public void render() {
BufferStrategy bs = this.getBufferStrategy();
if (bs == null) {
this.createBufferStrategy(3);
return;
}
// importe graphics da biblioteca AWT;
Graphics g = image.getGraphics();
// Vamos inserir um plano de fundo com a cor verde no padrao RGB!
g.setColor(new Color(0, 0, 0));
g.fillRect(0, 0, WIDTH, HEIGHT);
// A baixo vamso trabalhar a renderização das imagens!
		world.render(g);// esse render() pertence a classe World!
		for (int i = 0; i < entities.size(); i++) {
			Entity e = entities.get(i);
			e.render(g);
		}
		
		for (int i = 0; i < tiros.size(); i++) {
			tiros.get(i).render(g);
		}
		// vamos por aqui para que ele seja renderizado acima de todas as imagens!
		ui.render(g);
		
		// dispose e um metodo de segurança que evita ceros rerros ou bugs!
		g.dispose();
		// O grafico g recebe como valor o grafico do BufferedStrategy!
		g = bs.getDrawGraphics();
		g.drawImage(image, 0, 0, WIDTH * SCALE, HEIGHT * SCALE, null);
		
		// Fonte com as muniçoes exibido na tela!
		g.setFont(new Font("arial", Font.BOLD,20));
		g.setColor(Color.white);
		g.drawString("Munição: "+player.muniçao, 15, 60);
		// Fonte com o fps exibido na tela!
		g.setFont(new Font("Arial", Font.BOLD, 20));
		g.setColor(Color.BLACK);
		g.drawString("FPS: " + fps, (WIDTH * SCALE) - 100, (HEIGHT * SCALE) - 50);
		// Chama as BufferedImage
		bs.show();
	}
/// e  o render  da classe Word
public void render(Graphics g) {
// por q e o tamanho de cada tile!
int xstart = (Camera.x >> 5);
int ystart = (Camera.y >> 5);
//
int xfinal = xstart+(Game.WIDTH >> 5);
int yfinal = ystart+(Game.HEIGHT >> 5);
		for (int xx = xstart; xx <= xfinal; xx++) {
			for (int yy = ystart; yy <= yfinal; yy++) {
			// vamos usar um if, para caso der valores negativos em alguma das direções!
				
				if(xx<0 || yy<0 || xx>=WIDTH || yy>=HEIGHT) {
					continue;
				}
				
				Tiles tile = tiles[xx + (yy * WIDTH)];
				tile.render(g);
			}
		}
	}