2012-09-04 87 views
0

如何獲取流字節並將其轉換回圖像,下面是我的代碼。 但我得到的圖像是空白的。爲什麼? 代碼有問題嗎?如何獲取流字節並將其轉換回圖像 - IOS

我從我的NSOutputStream獲取字節並將其轉換回NSData,然後將NSData轉換爲圖像。

(void)stream:(NSStream *)theStream handleEvent:(NSStreamEvent)streamEvent { 

switch (streamEvent) { 

case NSStreamEventOpenCompleted: 
    NSLog(@"Stream opened"); 
    break; 
case NSStreamEventHasBytesAvailable: 

    if (theStream == inputStream) { 

     uint8_t buffer[5000]; 
     int len; 

     while ([inputStream hasBytesAvailable]) { 
      len = [inputStream read:buffer maxLength:sizeof(buffer)]; 
      NSLog(@"len=%d", len); 
      if (len > 0) { 

       NSData *pictureData = [NSData dataWithBytes:buffer length:len]; 

       UIImage *imagess = [[UIImage alloc]initWithData:pictureData]; 
       [imagesview setImage:imagess]; 




           } 

     } 
    } 
    break; 

} 

}

回答

1

這一點在你使用NSOutPutStream的混亂。雖然您可能正在發送圖像數據(遠端),但您必須使用NSInputStream來接收圖像數據,否?

你應該在'NSStreamEventHasBytesAvailable:'中做什麼,只是將數據附加到可變數據對象。當你最終得到'NSStreamEventEndEncountered'時,那就是當你得到你的圖像時:

{ 
    NSMutableData *data; // ivar 
} 

    // init it somewhere 
    data = [NSMutableData new]; 

case NSStreamEventHasBytesAvailable: 

if (theStream == inputStream) { 

    uint8_t buffer[5000]; 
    int len; 

    while ([inputStream hasBytesAvailable]) { 
     len = [inputStream read:buffer maxLength:sizeof(buffer)]; 
     NSLog(@"len=%d", len); 
     if (len > 0) { 
      [data appendBytes:(const void *)buffer length:len]; 
     } 
    } 
} 
break; 

case NSStreamEventEndEncountered: 
{ 
    if (theStream == inputStream) { 
     UIImage *imagess = [[UIImage alloc]initWithData:data]; 
     [imagesview setImage:imagess]; 
    } 
} break; 
相關問題