2013-02-24 11 views
9

Ho cercato di convertire un ImageIcon in BufferedImage ... E non ho avuto fortuna.Conversione di ImageIcon in un bufferImmagine

Ho un ImageIcon preesistente che deve essere convertito in un'immagine bufferizzata per la grande quantità di operazioni BufferedImage esistenti.

Ho trovato alcuni modi, ma tutti sono estremamente intensivi della CPU.

risposta

29

Cosa c'è di sbagliato con:

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

Molto utile grazie tante, in precedenza avevo mai incontrato questo metodo, ma subito girato verso il basso a causa della mia immiediet presupposto che avrebbe eseguito male, ma dopo provandolo a modo tuo, tutto sembra funzionare bene. – Caelum

+1

'BufferedImage.TYPE_INT_ARGB' se nell'icona sono presenti pixel trasparenti. – Matthieu

-2

ho cercato qualcosa chiamato Scalr, visualizzare il codice qui sotto

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

Cin cin.

+2

Hai davvero letto la domanda? –

8

Vedi ImageIcon, Image e BufferedImage:

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

Utilizzare questo se ImageIcon contiene una BufferedImage, o altrimenti la risposta di Werner. – aditsu

+0

Funziona su Windows ma non su Linux (provato su Ubuntu). – Matthieu

Problemi correlati