Olá pessoal!!!
Preciso enviar um arquivo pela rede, vocês sabe qual é a implementação de InputStream q também implementa Serializable??
Obrigado!
Olá pessoal!!!
Preciso enviar um arquivo pela rede, vocês sabe qual é a implementação de InputStream q também implementa Serializable??
Obrigado!
cara não faz sentido um input stream tb implementar serializable
tenho um exemplinho de socket.
Socket socket = new Socket("localhost", 5656);
OutputStream os = socket.getOutputStream();
os.write("TESTANDO\n".getBytes());
os.close();
socket.close();
é só ver agora a implementação de output stream que te melhor serve
Silveta, muito obrigado!
Mas na verdade o q eu preciso é enviar um BufferedImage pela rede e pegar ele do outro lado, mas não sei como, não fou utilizar socketes, isso é transparente pra mim, eu só preciso q seja serializable.
BufferedImage, se não me engano, também não é serializável.
Tente converter a imagem para um formato sem perdas (como PNG), e mande os bytes da imagem como PNG mesmo.
[quote=thingol]BufferedImage, se não me engano, também não é serializável.
Tente converter a imagem para um formato sem perdas (como PNG), e mande os bytes da imagem como PNG mesmo. [/quote]
Thingol,
Como seria a melhor forma de transformar o bufferedImage em um outro objeto serializavel e depois retransforma-lo em um bufferedImage?
Qual o sentido de mandar um componente awt para outro computador?
É que eu necessito processar imagem em um outro computador, fazendo a segmentação dela e depois tenho q receber de volta a imagem resultante…
Ah entendo.
Uma solução é usar o ImageIO.write, que recebe esse BufferedReader(que é um RenderedImage), mandar pra um OutputStream.
Do outro lado, usar o ImageIO.read para receber um InputStream da aplicação que tá mandando, e retorna um BufferedImage pronto.
O mais difícil é a parte do meio que liga as duas pontas
Eu consegui fazendo assim… mas tah comendo memória… alguma sugestão???
[code]
public class MapFile {
/**
* This constructor should always be used when construcing a new instance.
* @param file the map file that can be read by Java (.png, .jpg, etc.).
*/
public String convertToString(java.io.File file){
String map = null;
try {
StringBuffer sb = new StringBuffer(1024);
char[] characterArray = new char[1024];
BufferedReader br = new BufferedReader(new FileReader(file));
while(br.read(characterArray) != -1){
sb.append(String.valueOf(characterArray));
}
br.close();
map = sb.toString();
} catch (IOException ex) {
ex.printStackTrace();
}
return map;
}
/**
* Gets a <tt>BufferedImage</tt>> that represents the map.
* @return the map in the form of a <tt>BufferedImage</tt>.
* @see java.awt.BufferedImage
*/
public java.awt.image.BufferedImage getBufferedImage( String img ){
ByteArrayInputStream bais = new ByteArrayInputStream(img.getBytes());
try {
return ImageIO.read(bais);
} catch (IOException ex) {
ex.printStackTrace();
}
return null;
}
}[/code]
Não use Strings(eles não aguentam o tamanho dos arquivos). Use os Streams.
Procure no Google sobre conversões de InputStream p/ OutputStream.