2015-07-20 90 views
-1

我是iOS开发中的新手。我试图通过使用SOAP将它编码为base64格式来发送点击图像。我不知道该怎么做。在iOS中使用SOAP发送图像使用SOAP Objective-C

这是我imagePickerController委托:

// delegate method for picking images 
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
    { 
    NSString *mediaType = [info valueForKey:UIImagePickerControllerMediaType]; 

    if([mediaType isEqualToString:(NSString*)kUTTypeImage]) 
    { 
    UIImage *photoTaken = [info objectForKey:@"UIImagePickerControllerOriginalImage"]; 

    //Save Photo to library only if it wasnt already saved i.e. its just been taken 
    if (picker.sourceType == UIImagePickerControllerSourceTypeCamera) 
     { 
     UIImageWriteToSavedPhotosAlbum(photoTaken, self, @selector(image:didFinishSavingWithError:contextInfo:), nil); 

    NSData *data=[[NSData alloc] initWithData:UIImagePNGRepresentation(photoTaken)]; 
     base64= [[NSString alloc]init]; 
     base64 =[data base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithCarriageReturn];  
     } 
    } 

// [picker dismissModalViewControllerAnimated:YES]; 

    [picker dismissViewControllerAnimated:YES completion:NULL]; 
    [picker release]; 
} 
+0

Base64是字符串类型 –

回答

2

..

UIImage* chosenImage =info[UIImagePickerControllerEditedImage]; 

//encoding image to base64 

    imgData=[[NSData alloc] initWithData:UIImagePNGRepresentation(chosenImage)]; 
_base64=[[NSString alloc]init]; 

    _base64=[imgData base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength]; 
self.tempbase= _base64; 

和在SOAP消息调用tempbase

0

图像尺寸将是巨大的。它可以降低您的应用程序性能,因此首先通过调整图像大小来减小图像大小。

-(UIImage *) imageWithImage:(UIImage *) image scaledTOSize:(CGSize) newsize 
{ 
    UIGraphicsBeginImageContext(newsize); 
    [image drawInRect:CGRectMake(0, 0, newsize.width, newsize.height)]; 
    UIImage *newImg=UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    return newImg; 
} 

现在转换这个小型UIImageNSData

NSData *imgData=[[NSData alloc] initWithData:UIImagePNGRepresentation(image)]; 

然后使用第三方库转换成NSData的base64字符串 -

base64.h

的NSData + Base64编码。 h

NSstring *imgString = [imgData base64EncodedString]; 
imgString = [imgString stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 

现在发送此字符串到您的服务。

+0

MAAM,其不working..error是[CFString字符串respondsToSelector:]:消息发送到释放的实例0xbbf6000 –

0

代码:

UIGraphicsBeginImageContext(self.drawImage.frame.size); 
[self.drawImage.layer renderInContext:UIGraphicsGetCurrentContext()]; 

UIImage *imageView = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

NSData* data = UIImageJPEGRepresentation(imageView, 1.0f); 
[Base64 initialize]; 
NSString *strEncoded = [Base64 encode:data]; 

注意:是的drawImage和UIImageView的进口Base64.h类的对象。

在didFinishPickingMediaWithInfo