Como converter um BufferedImage em FileInputStream

11 respostas
wilsontads

Alguém aqui sabe como faço essa conversão?

11 Respostas

victorcosta

Use o método ImageIO.write

http://docs.oracle.com/javase/tutorial/2d/images/saveimage.html

wilsontads

Não tem outra maneira de fazer essa conversão, sem ter que salvar no disco? eu só preciso desse FileInputStream pra salvar em um campo do tipo Blob no banco

A

As duas classes não tem nada a ver entre si, né carinha? O único jeito que eu vejo de fazer isso é gravar sua imagem em um arquivo temporário e depois abri-la.

Mas, o que você realmente está tentando fazer?

wilsontads

Eu preciso salvar uma imagem no banco

BufferedImage _imagem = ImageIO.read(imagem);

eu converto ela pra um BufferedImage, pra fazer algumas alterações nela com o Graphics2D, depois preciso salvar essa imagem no banco, em um campo do tipo blob.

A

O problema, carinha, é que você fixou que quer um arquivo de entrada: FileInputStream. Não dá pra você usar um InputStream, ao invés disto? Por que não?

victorcosta

ImageIO aceita OutputStream também no lugar de File, pra vc poder por exemplo enviar via Socket, salvar em ByteArrayOutputStream, etc

wilsontads

Você diz o BufferedImage receber um FileInputStream da imagem, ao invés de um File?

wilsontads

O problema, é que eu tenho um BufferedImage e preciso retornar pro meu DAO um FileInputStream.

A

O ImageIO.write não grava em um arquivo, mas sim em um outputstream. Então o que você precisa é escolher um outputstream que não grava no disco, como o byteArrayOutputStream.

O exemplo abaixo mostra como converter imagem em bytes.
http://www.mkyong.com/java/how-to-convert-bufferedimage-to-byte-in-java/

Aí você pode gravar esses bytes no banco por um preparedStatement.setObject(…)

Ou, pessoalmente estaria mais seguro com isso,
criar um ByteArrayInputStream com base nos bytes gerados e daí usar um preparedStatement.setBinaryStream(…)

wilsontads

Pessoal, eu to tendo um problema ao salvar no banco… pra vocês entenderem melhor…
essa é a imagem que eu crio no disco…

porém, quando eu insiro no banco, ela vem assim…

ViniGodoy

Nossa, ha 5 dias atrás eu já tinha postado isso:

Interessante como parece que a mesma dúvida se repete mais ou menos ao mesmo tempo no GUJ.

Quanto a sua imagem ser cortada. Você tem certeza que está gerando essa imagem com os espaços em branco no disco? Você pode postar como está fazendo para salvar e para carregar a imagem?

Criado 9 de janeiro de 2012
Ultima resposta 9 de jan. de 2012
Respostas 11
Participantes 4