Enviar BufferedImage (nao serializavel) via socket

Ola … jah estou a um tempo pesquisando sobre o envio de objetos nao serializavel via socket(que nao é possivel) … e encontrei varias soluções … porem nenhuma de fato clara

solução que encontrei … enviar os bytes da imagem porem preciso converter BufferedImage em byte[]

alguem pode me dah uma ajuda?

Obrigado

Você vai ter q acessar o Raster da imagem
Exemplo meu:

int[] raster = ((DataBufferInt)image.getRaster().getDataBuffer()).getData();

No caso, eu tava trabalhando com um BufferedImage armazenado em um array de ints (TYPE_INT_RGB), vê qual é o seu e dá o cast correto.

isso certo?

 byte[] raster = ((DataBufferByte)image.getRaster().getDataBuffer()).getData();  

acontece esse erro>>

java.lang.ClassCastException: java.awt.image.DataBufferInt cannot be cast to java.awt.image.DataBufferByte

Seu BufferedImage é armazenado em um array de ints
O tipo de armazenamento vc escolhe quando dá um new BufferedImage
Mas como vc só quer enviar ele pelo socket nem precisa se preocupar com isso, usa os metodos de ImageIO :slight_smile:

ImageIO.write(RenderedImage im, String formatName, OutputStream output);
ImageIO.read(InputStream input)

RenderedImage é sua imagem
OutputStream e InputStream vc pega eles no Socket
formatName acho q é a String contendo o formato no qual você quer escrever a imagem, testa “JPG”, “JPEG”, “PNG”, “BMP”…

O qu vejo o pessoal fazer bastante é gerar um arquivo de imagem temporário…Encodar esse arquivo comprimido para JPEG(tem classes e métodos no Java padrão pra isso), obter os bytes desse arquivo, enviar esse bytes e recirar o arquivo do outro lado…

Fica bem rápido até…Vi um sistema com tela remota (tipo VNC) ser implmentado assim…

entao pensei nisso … em criar um arquivo temporario no cliente com essa imagem tipo Jpg e enviar os bytes desse arquivo pro servidor onde quero tratar melhor essa imagem …

qnd tiver um tempo implementarei isso … Obrigado a todos!