2015-07-20 54 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