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?