Escale um BufferedImage da maneira mais rápida e fácil

A tarefa: Eu tenho algumas imagens, eu as reduzo e as uno a uma imagem. Mas eu tenho um pequeno problema com a implementação:

O problema concreto: Eu quero redimensionar / dimensionar uma BufferedImage. O método getScaledInstance retorna um objeto Image, mas não consigo convertê-lo em BufferedImage:

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

(Eu não sei porque é um ToolkitImage em vez de uma imagem ...)

Eu encontrei uma solução:

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);

Mas é lento, e acho que deveria haver uma maneira melhor de fazer isso.

Eu preciso do BufferedImage, porque eu tenho que pegar os pixels para juntar as pequenas imagens.

Existe uma maneira melhor (mais agradável / rápida) de fazê-lo?

EDITAR: Se eu lançar a imagem primeiro para o ToolkitImage, ela terá um método getBufferedImage (). Mas sempre retorna null. Você sabe por quê?

questionAnswers(7)

yourAnswerToTheQuestion