Como converte java.awt.Image para byte[]  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
gilsonpolito
Java Ninja

Membro desde: 21/12/2006 19:15:48
Mensagens: 256
Offline

Ola pessoal,
Como posso converter um objeto Image em um byte[]?

Tenho o seguinte código:


gostaria de redimensionar esta imagem e depois recuperar os bytes da imagem redimensionada.
tentei redimensionar desta forma:

mas não sei como recuperar o byte[] da imagem redimensionada, e também não consigo garantir que isto está correto.

Alguém poderia me ajudar?
Vinny? vi que você já postou bastante a respeito aqui, mas não consegui resolver meu problema ainda....

Muito Obrigado
biro
JavaChild

Membro desde: 20/10/2009 08:17:15
Mensagens: 131
Offline



Utilize o método acima para transformar a imagem(ou qualquer outro arquivo) em um array de bytes...

E quanto ao redimensionamento, experimente redimensionar somente o componente que exibe a imagem(não tenho certeza se funciona para swing)
juliocbq
GUJ Expert
[Avatar]

Membro desde: 13/11/2008 12:10:18
Mensagens: 3927
Offline

Pode usar um byteArrayOutputStream para copiar os bytes.

;


Para processar a imagem, pode usar um WritableRaster. Essa classe te dá acesso completo aos pixel da imagem.
Ou se preferir fazer algo mais rústico, use o próprio vetor de bytes.

This message was edited 2 times. Last update was at 27/10/2009 09:10:44


www.citrox.com.br
gilsonpolito
Java Ninja

Membro desde: 21/12/2006 19:15:48
Mensagens: 256
Offline

Ola pessoal, antes de mais nada obrigado por tentarem me ajudar.
biro o meu problema é justamente que não que ter que gravar a imagem redimensionada em disco para depois obter um File e recuperar o byte[].

juliocbq onde entraria a imagem que possuo em memória neste processo?

O que preciso realmente é algo do tipo:


como poderia implementar um método desse?

Obrigado mais uma vez a todos!!
juliocbq
GUJ Expert
[Avatar]

Membro desde: 13/11/2008 12:10:18
Mensagens: 3927
Offline



ou pode ser mais específico quanto ao formato:




This message was edited 1 time. Last update was at 27/10/2009 09:24:14


www.citrox.com.br
gilsonpolito
Java Ninja

Membro desde: 21/12/2006 19:15:48
Mensagens: 256
Offline

Ola juliocbq,
Me desculpe, mas não estou conseguindo entender... O método que você está propondo possui um parametro BufferedImage bi. Como posso obter este parametro a partir de um java.awt.Image?

Obrigado novamente!!
juliocbq
GUJ Expert
[Avatar]

Membro desde: 13/11/2008 12:10:18
Mensagens: 3927
Offline

não use o awt.Image.


Use BufferedImage do swing, e ImageIO para copiar os dados. BufferedImage, e ImageIO são bem mais otimizadas.
Quando se vai trabalhar com imagens, deve-se pensar em performance também.

www.citrox.com.br
gilsonpolito
Java Ninja

Membro desde: 21/12/2006 19:15:48
Mensagens: 256
Offline

Como você faria o seguinte:
- ler uma imagem do disco (exemplo: Foto.jpg)
- Redimensionar a imagem para 300,300
- Recuperar a imagem redimensionada e grava-la no banco de dados (aqui que eu preciso do byte[])

Basicamente o que preciso é isto.
O que estou fazendo é:
- leio o arquivo do disco;
- crio um byte[] da imagemOriginal;
**preciso redimensionar
** criar um novo byte[] da imagem redimensionada
- gravar no banco

O que está com ** é onde estou enrroscando.

Obrigado!
juliocbq
GUJ Expert
[Avatar]

Membro desde: 13/11/2008 12:10:18
Mensagens: 3927
Offline

Aqui vou ler a imagem do banco.



Gravar e fazer o contrario.

www.citrox.com.br
gilsonpolito
Java Ninja

Membro desde: 21/12/2006 19:15:48
Mensagens: 256
Offline

abaixo tem mais ou menos um exemplo do que estou precisando....


a linha

não está criando o ImageInputStream......

Obrigado
_Zell_
Debugger
[Avatar]

Membro desde: 21/07/2010 15:44:12
Mensagens: 66
Offline

Julio, eu entendo sua posição sobre o ImageIO e BufferedImage mas quando a gente precisa manipular informações de desenho na imagem não tem como escapar muito de usar Image e Graphycs =)

A solução para o problema deste tópico eu postei nesse tópico aqui: http://www.guj.com.br/posts/list/0/58204.java#1169911

Deem uma olhada lá o/
Espero ter ajudado! Abraço!
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team