Как вытащить UIImages из NSData из сокета - PullRequest
0 голосов
/ 12 мая 2010

Я использую 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 ]

2 голосов
/ 12 мая 2010

Вы должны реализовать свой собственный протокол обертки вокруг изображений. Это может быть так же просто, как отправка длины данных изображения перед фактическими данными изображения. При получении данных вы теперь знаете, сколько байтов вам нужно извлечь, прежде чем вы получите полное изображение. Поскольку каждое изображение выделяется из потока, у вас есть длина следующего изображения.

Так как вы отправляете с одного iPhone на другой, вам не нужно беспокоиться о порядке байтов, и вы можете просто использовать 32-битное int на каждом конце для размера.

0 голосов
/ 27 июня 2010

Просто используйте разделитель для отдельной идентификации различных изображений. Когда вы ловите разделитель, вы знаете, что другое изображение будет следующим.

...