Skaluj obraz BufferedImage najszybciej i najłatwiej

Zadanie: Mam kilka zdjęć, zmniejszam je i łączę je w jedno zdjęcie. Ale mam mały problem z implementacją:

Konkretny problem: Chcę zmienić rozmiar / skalę pliku BufferedImage. Metoda getScaledInstance zwraca obiekt Image, ale nie mogę go przekazać do BufferedImage:

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

(Nie wiem, dlaczego jest to ToolkitImage zamiast Image ...)

Znalazłem rozwiązanie:

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

Ale jest powolny i myślę, że powinien być lepszy sposób, aby to zrobić.

Potrzebuję obrazu BufferedImage, ponieważ muszę uzyskać piksele, aby połączyć małe obrazy.

Czy istnieje lepszy (lepszy / szybszy) sposób na to?

EDYTOWAĆ: Jeśli rzucę obraz najpierw do ToolkitImage, ma on metodę getBufferedImage (). Ale zawsze zwraca wartość null. Wiesz dlaczego?

questionAnswers(7)

yourAnswerToTheQuestion