Escale una imagen almacenada de la manera más rápida y fácil

La tarea: Tengo algunas imágenes, las reduzco y las uno a una imagen. Pero tengo un pequeño problema con la implementación:

El problema concreto: Quiero cambiar el tamaño / escala de una imagen almacenada. El método getScaledInstance devuelve un objeto Image, pero no puedo convertirlo en BufferedImage:

Exception in thread "main" java.lang.ClassCastException: sun.awt.image.ToolkitImage cannot be cast to java.awt.image.BufferedImage

(No sé por qué es un ToolkitImage en lugar de una imagen ...)

Encontré una solución:

Image tmp = bi.getScaledInstance(SMALL_SIZE, SMALL_SIZE, BufferedImage.SCALE_FAST);
BufferedImage buffered = new BufferedImage(SMALL_SIZE,SMALL_SIZE,BufferedImage.TYPE_INT_RGB);
buffered.getGraphics().drawImage(tmp, 0, 0, null);

Pero es lento, y creo que debería haber una mejor manera de hacerlo.

Necesito el BufferedImage, porque tengo que conseguir los píxeles para unir las imágenes pequeñas.

¿Hay una manera mejor (mejor / más rápida) de hacerlo?

EDITAR: Si lanzo la Imagen primero a ToolkitImage, tiene un método getBufferedImage (). Pero siempre devuelve nulo. ¿Sabes por qué?

Respuestas a la pregunta(7)

Su respuesta a la pregunta