【发布时间】:2014-11-28 02:43:05
【问题描述】:
如何编写 UIImage 并将数据发送到接收服务器。我尝试过,但 NSOutputStream 只能在流中写入最多 136768 个字节,而且我只保存一小部分图像。非常感谢您的帮助。这是我的代码:
来自 UIImage 选择器
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
UIImage *image = info[UIImagePickerControllerOriginalImage];
NSData *imgData = UIImageJPEGRepresentation(image,1.0f);
NSLog(@"%d",imgData.length);
NSMutableData *completeData = [[NSMutableData alloc]init];
[completeData appendData:imgData];
NSInteger bytesWritten = 0;
while ( completeData.length > bytesWritten )
{
//sending NSData over to server
NSInteger writeResult = [outputStream write:[completeData bytes]+bytesWritten maxLength:[completeData length]-bytesWritten];
if ( writeResult == -1 )
NSLog(@"error code here");
else
bytesWritten += writeResult;
if (bytesWritten == writeResult) {
[self dismissViewControllerAnimated:YES completion:nil];
}
}
}
流代理
- (void)stream:(NSStream *)aStream handleEvent:(NSStreamEvent)eventCode
// An NSStream delegate callback that's called when events happen on our
// network stream.
{
#pragma unused(aStream)
assert(aStream == self.networkStream);
switch (eventCode) {
case NSStreamEventOpenCompleted: {
[self _updateStatus:@"Opened connection"];
} break;
case NSStreamEventHasBytesAvailable: {
if (aStream == self.networkStream) {
uint8_t buffer[5000];
int len;
while ([self.networkStream hasBytesAvailable]) {
len = [self.networkStream read:buffer maxLength:sizeof(buffer)];
NSLog(@"len=%d", len);
if (len > 0) {
NSData *pictureData = [NSData dataWithBytes:buffer length:len];
[sharedManager.pictureMutableData appendData:pictureData];
NSLog(@"%d",sharedManager.pictureMutableData.length);
}
}
}
case NSStreamEventHasSpaceAvailable: {
[self _didReceiveDataImage:sharedManager.pictureMutableData];
NSLog(@"%d",sharedManager.pictureMutableData.length);
} break;
case NSStreamEventErrorOccurred: {
[self _stopReceiveWithStatus:@"Stream open error"];
} break;
case NSStreamEventEndEncountered: {
// ignore
} break;
default: {
assert(NO);
} break;
}
}
【问题讨论】:
标签: ios objective-c