通过套接字将图像作为字节数组从matlab发送到java

时间:2014-04-19 20:16:58

标签: matlab

我正在尝试通过套接字将图像从matlab服务器发送到Java客户端。首先,我将图像转换为字节数组,并在客户端使用readFully方法,需要指定长度。 问题是字节数​​组的大小从一个图像变为另一个图像,当我通过write()方法发送大小时,它在客户端无法正确读取。 这是我的代码片段

Matlab服务器

%% convert image 
Javaimage=im2java2d (image);
Arraystream=ByteArrayOutputStream;
ImageIO.write (javaimage,'jpg', arraystream)
Arraystream.flush ();
Bytearray=arraystream.toByteArray;

%% send size through output stream
Outstream=write (size (byteArray, 1))
%% send array
outStream=write (byteArray);

在客户端我尝试过很多方法,比如read,readInt,readDouble,但我觉得麻烦的是我尝试使用writeInt()的write()方法,但是即使我包含了库,matlab仍然无法识别它需要:     Java.io     Java.net     java.io.DataOutputStream中     java.io.DataInputStream中

我还应该包括数组的大小通常超过10000 我将不胜感激任何帮助 提前谢谢

1 个答案:

答案 0 :(得分:0)

我终于找到了一个非常简单的答案,这是最后要检查的内容。

当我创建套接字输入和输出流时,我做了以下

     InStream =socket.getInputStream; 
     OutStream=socket.getOutputStream; 

这允许您使用inputStream类中的方法,例如read()和write(),这些方法只读取字节。要读取任何其他类型的数据,我们必须使用dataInputStream和dataOutput流类。允许使用readInt()和writeInt等方法读取基本类型(如int,double等)的过滤器类的类型 为此,您需要更改以上内容

 Instream=dataInputStream (socket.getInputStream); 
 OutStream=dataOutputStream (socket.getOutputStream);

就这么简单。