2013-02-24 12 views
9

Próbowałem przekonwertować ImageIcon na BufferedImage ... I nie miałem szczęścia.Konwersja ImageIcon na BufferedImage

Mam już istniejącą ImageIcon, która musi zostać przekonwertowana na buforowany obraz dla ogromnej ilości istniejących operacji BufferedImage.

Znalazłem kilka sposobów, ale wszystkie z nich są bardzo obciążające procesor.

Odpowiedz

29

Co w tym złego:

BufferedImage bi = new BufferedImage(
    icon.getIconWidth(), 
    icon.getIconHeight(), 
    BufferedImage.TYPE_INT_RGB); 
Graphics g = bi.createGraphics(); 
// paint the Icon to the BufferedImage. 
icon.paintIcon(null, g, 0,0); 
g.dispose(); 
+1

Bardzo pomocny dziękuję bardzo, ja wcześniej przyszedł po drugiej stronie tej metody, ale szybko zastrzelił go z powodu mojego immiediet założeniu, że będzie wykonać źle, ale po wypróbowanie go na swój sposób, wszystko wydaje się działać dobrze. – Caelum

+1

'BufferedImage.TYPE_INT_ARGB', jeśli na ikonie znajdują się przezroczyste piksele. – Matthieu

-2

Próbowałem coś o nazwie Scalr, zobacz poniższy kod

Scalr.resize((BufferedImage) ImageIO.read(file), Method.SPEED, 250, OP_ANTIALIAS, OP_BRIGHTER);

Cheers.

+2

Czy rzeczywiście czytasz pytanie? –

8

Zobacz ImageIcon, Image i BufferedImage:

ImageIcon yourImage; 
Image image = yourImage.getImage(); 
BufferedImage buffered = (BufferedImage) image; 
+2

Skorzystaj z tego, jeśli ImageIcon zawiera BufferedImage lub inaczej odpowiedź Wernera. – aditsu

+0

Działa to w systemie Windows, ale nie w systemie Linux (w przypadku systemu Ubuntu). – Matthieu