Search code examples
ios8base64uiimagepickercontrollerconverterscgsize

Unable to see UIImage once stored and sent to Server form CoreData?


The first part of the code is where the camera button is pressed but not before checking if a textfield has been filled, this then checks camera type. All normal here me thinks.Once the picture has been taken I then resize the image so that its of smaller size then convert it to a NSString to which then the NSString data is stored in CoreData and then sent off to a server to be shown on screen.

This is the camera press button

-(IBAction)takePicture:(UIButton*)sender {

if (printedname.text.length ==0){

 UIAlertView*alert=[[UIAlertView alloc]initWithTitle:
 @"Please enter Name"message:@""delegate:self cancelButtonTitle:
 @"Dismiss"otherButtonTitles:nil];[alertshow];return;

}

UIImagePickerController *pictureTaker = [[UIImagePickerController alloc] init];

pictureTaker.delegate = self;

    if ([UIImagePickerController isSourceTypeAvailable:
     UIImagePickerControllerSourceTypeCamera]) {
     pictureTaker.sourceType = UIImagePickerControllerSourceTypeCamera;

} else if([UIImagePickerController isSourceTypeAvailable:
         UIImagePickerControllerSourceTypeSavedPhotosAlbum]){

         pictureTaker.sourceType  = UIImagePickerControllerSourceTypeSavedPhotosAlbum;

}

[self presentViewController:pictureTaker animated:YES completion:nil];}

-(void)imagePickerController:(UIImagePickerController *)pictureTaker didFinishPickingMediaWithInfo:(NSDictionary *)info {

NSLog(@"%@", info);
NSString * mediaType = [info objectForKey:UIImagePickerControllerMediaType];

if([mediaType isEqual:(__bridge NSString *)kUTTypeImage]){

    [pictureTaker dismissViewControllerAnimated:YES completion:nil];

    base64Image = [info objectForKey:UIImagePickerControllerEditedImage];

    base64Image = [info objectForKey:UIImagePickerControllerOriginalImage];

    CGSize newSize = CGSizeMake(100.0f,60.0f);
    UIGraphicsBeginImageContext(newSize);
    [base64Image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
    base64Image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    NSData *data = UIImageJPEGRepresentation(base64Image, 1.0);
    base64string = [data base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithLineFeed];

    NSLog(@" image (%@), width: %.0f, height: %.0f, scale: %0.2f, string len %lu",base64Image,base64Image.size.width,
          base64Image.size.height, base64Image.scale,(unsigned long)base64string.length); 
}

UIImageWriteToSavedPhotosAlbum(base64Image, self, NULL , NULL);

}

It seem to send ok save but kind of get's lost half way through, can anyone help as Iv been >trying to sort this out for days now, Iv included below the console output for you to see >aswell, thanks to anyone that can help.

UIImagePickerControllerMediaType = "public.image";
UIImagePickerControllerOriginalImage = "<UIImage: 0x17056260> size 
{ 2448, 3264 }
orientation 3 scale 1.000000";

}

Solution

  • I managed to fix the problem with the code below:

    if (self.base64Image!= nil){
    
        NSString *strImageData = [self.base64Image stringByReplacingOccurrencesOfString:@"+" withString:@"%2B"];
    
        NSString *param =[NSString stringWithFormat:@"photo=%@", strImageData];
    
        [values addObject:param];
    }