如何从套接字中提取NSData中的UIImages

时间:2010-05-11 20:32:54

标签: iphone uiimage nsdata asyncsocket

我正在使用ASyncSocket将一些UIImages从一个设备移动到另一个设备。

基本上,在我拥有的一台设备上:

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 个答案:

答案 0 :(得分:2)

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

由于您是从一个iPhone发送到另一个iPhone,因此您不必担心字节顺序,并且可以在每个端点使用32位int作为大小。

答案 1 :(得分:0)

只需使用分隔符分别识别不同的图像。当您捕捉到分隔符时,您知道下一个图像会出现。