代码之家  ›  专栏  ›  技术社区  ›  Daniel Amitay

如何从套接字中从nsdata中提取uiimages

  •  0
  • Daniel Amitay  · 技术社区  · 14 年前

    我正在使用AsyncSocket将一些ui映像从一个设备移动到另一个设备。

    基本上,在一个设备上,我有:

    NSMutableData *data = UIImageJPEGRepresentation(image, 0.1);
    
    if(isRunning){
        [sock writeData:data withTimeout:-1 tag:0];
    }
    

    因此,每隔一段时间就会有一个新的图像添加到插座中(比如网络摄像机)。

    然后,在另一台设备上,我打电话给:

    [listenSocket readDataWithTimeout:1 tag:0];
    

    它将以以下方式响应:

    - (void)onSocket:(AsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag
    {
        [responseData appendData:data];
        [listenSocket readDataWithTimeout:1 tag:0];
    }
    

    基本上,我想做的是让一个nstimer去调用@selector(pullimages):

    -(void) PullImages {
    

    在这里,我想能够从Responsedata中提取图像。我该怎么做? 可能还没有完整的图像,可能有多个图像,可能有一个半图像!

    我要将nsdata解析为每个现有映像!

    }
    

    有什么帮助吗?事先谢谢!

    2 回复  |  直到 14 年前
        1
  •  2
  •   drawnonward    14 年前

    您必须围绕图像实现自己的包装协议。这可以简单到在实际图像数据之前发送图像数据的长度。在接收数据时,您现在知道在获得完整的图像之前需要提取多少字节。当每个图像从流中分离出来时,就有了下一个图像的长度。

    因为你是从一个iphone发送到另一个iphone,你不必担心endianes,只需在每端使用32位int作为大小。

        2
  •  0
  •   Charith Nidarsha    14 年前

    只需使用分隔符来分别标识不同的图像。当捕获分隔符时,您知道接下来是另一个图像。