Salvar jpg

Galera, estou precisando salvar uma imagem em um arquivo jpg .
Seguinte, eu tenho um Image e este tem que ser a imagem a ser salva.
Como eu posso fazer isso?
Abração a todos!

Use ImageIO.write() :

http://java.sun.com/javase/6/docs/api/javax/imageio/ImageIO.html#write(java.awt.image.RenderedImage,%20java.lang.String,%20java.io.File)

ImageIO.write(imagem, "jpg", new File("nome do arquivo de destino.jpg"));

já tentei fazer com o ImageIO anteriormente mas não consegui pelo simples fato de não saber onde eu coloco meu objeto image, já que ele so aceita no parametro um RenderedImage.
vc poderia postar um cod completo pra eu poder entender?

RenderedImage é uma interface, e uma das classes que implementa essa interface é BufferedImage. Então, se você puder carregar sua imagem num objeto do tipo BufferedImage, o problema está resolvido.

Bem, más aí é que está a questão!
como eu converto um Image em um BufferedImage para poder depois salva-lo com o ImageIO?

Como voce ta pegando essa Image? Pelo ImageIcon?
Se for essa não é a melhor maneira.

Use a ImageIO.read(File) para obter um BufferedImage.

não eu tenho um processo externo que me devolve um objeto do tipo Image

Mas não é possivel retornar um BufferedImage no lugar disso?

Image é uma classe abstrata. Talvez seu método lhe retorne um BufferedImage mas como Image. Faça um casting.

BufferedImage bufferedImage = (BufferedImage) image;

O pior é que eu já tentei isso mas dá pau…
Exception in thread “main” java.lang.UnsupportedOperationException: getGraphics() not valid for images created with createImage(producer)
at sun.awt.image.ToolkitImage.getGraphics(ToolkitImage.java:292)

=\

Voce nao consegue mudar a implementação onde voce constroi essa Image?

Bom dia Mark!
Infelizmente não, pois quem me traz isso é uma biblioteca que eu estou usando…
:?

Ninguém tem mais nenhuma idéia de como me ajudar???

Já tentou verificar se a imagem que você recebe implementa a interface RenderedImage? Nesse caso, você pode usar copyData() ou getData() para capturar os pixels dela. Outra saída é usar a classe PixelGrabber.

Não implementa…
Só herda de object mesmo…
Eu ainda não vi essa classse PixelGrabber…
podes postar um ex. pra mim?
:smiley:
abraço

Há um exemplo na descrição da classe:

http://java.sun.com/javase/6/docs/api/java/awt/image/PixelGrabber.html