Metodo de Imagem -erro de cast

5 respostas
progJava

porque acontece esse ERRO???

try { File image = new File("C:\\LojaVirtual\\Img\\Branca.JPG"); BufferedImage imagem = ImageIO.read(image); imagem = (BufferedImage)imagem.getScaledInstance(200, 200, Image.SCALE_AREA_AVERAGING + Image.SCALE_SMOOTH); } catch (IOException e) { System.out.println("Erro ao ler a imagem"); }

ERRO.:

Exception in thread AWT-EventQueue-0 java.lang.ClassCastException: sun.awt.image.ToolkitImage cannot be cast to java.awt.image.BufferedImage

at Telas.Imagem.jToggleButton1ActionPerformed(Imagem.java:192)

at Telas.Imagem.access$200(Imagem.java:21)

at Telas.Imagem$3.actionPerformed(Imagem.java:127)

at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)

at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)

at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)

at javax.swing.JToggleButton$ToggleButtonModel.setPressed(JToggleButton.java:291)

at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)

at java.awt.Component.processMouseEvent(Component.java:6038)

at javax.swing.JComponent.processMouseEvent(JComponent.java:3260)

at java.awt.Component.processEvent(Component.java:5803)

at java.awt.Container.processEvent(Container.java:2058)

at java.awt.Component.dispatchEventImpl(Component.java:4410)

at java.awt.Container.dispatchEventImpl(Container.java:2116)

at java.awt.Component.dispatchEvent(Component.java:4240)

at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)

at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)

at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)

at java.awt.Container.dispatchEventImpl(Container.java:2102)

at java.awt.Window.dispatchEventImpl(Window.java:2429)

at java.awt.Component.dispatchEvent(Component.java:4240)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)

at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)

5 Respostas

ViniGodoy

É isso mesmo, você não pode converter o objeto Image retornado pelo getScaledInstance num BufferedImage. Ele não é um BufferedImage, mas um ToolkitImage.

No lugar, use o seguinte:
try {     
   BufferedImage imagem = ImageIO.read(new File("C:/LojaVirtual/Img/Branca.JPG"));     

   //Use TYPE_INT_ARGB se tiver transparência
   BufferedImage scaled = new BufferedImage(200, 200, BufferedImage.TYPE_INT_RGB); 
   Graphics2D g2d = scaled.createGraphics();   
   g2d.drawImage(imagem, 
      0,0,scaled.getWidth(), scaled.getHeight(),  //Coord. do destino
      0,0, imagem.getWidth(), imagem.getHeight(), //Coord. da origem
      null);  
   g2d.dispose();
} catch (IOException e) {     
   System.err.println("Erro ao ler a imagem");     
   e.printStackTrace();
}
progJava

ta dando erro nas linha (metodo get Width, getHeigt

Porque será?

g2d.drawImage(0,0,scaled.getWidth(), scaled.getHeigth(), //Coord. do destino 0,0, imagem.getWidth(), imagem.getHeigth(), //Coord. da origem

ViniGodoy

Escrevi Height errado.

progJava
now ta dando erro (cannot find symbol symbol: method drawImage) na linha .: ta quase rssrs.vlw - acho que são os parametros os dados inseridos dentro dele.:
g2d.drawImage(AQUI
)
g2d.drawImage(0,0,scaled.getWidth(), scaled.getHeight(),
try {       
   BufferedImage imagem = ImageIO.read(new File("C:/LojaVirtual/Img/Branca.JPG"));       
  
   //Use TYPE_INT_ARGB se tiver transparência   
   BufferedImage scaled = new BufferedImage(200, 200, BufferedImage.TYPE_INT_RGB);   
   Graphics2D g2d = scaled.createGraphics();     
   g2d.drawImage(0,0,scaled.getWidth(), scaled.getHeight(),  //Coord. do destino   
      0,0, imagem.getWidth(), imagem.getHeight(), //Coord. da origem   
      null);     
   g2d.dispose();   
} catch (IOException e) {       
   System.err.println("Erro ao ler a imagem");       
   e.printStackTrace();   
}   

jLabel1.add(img);
    }
ViniGodoy

Faltou passar a imagem no primeiro parâmetro.
Veja o javadoc para mais informações. Aliás, vc não conseguiria ter você mesmo olhado no javadoc e corrigido???

Criado 24 de dezembro de 2010
Ultima resposta 26 de dez. de 2010
Respostas 5
Participantes 2