2011-04-18 3 views
1

다음과 같이 iOS UIImagePickerController selected 이벤트에서 Base64 문자열을 검색하려고합니다.UIImagePIckerController Base64 문자열로 선택된 이미지

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { 
    //on selected 

    UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage]; 

    NSData *imgData = UIImageJPEGRepresentation(image, 1.0); 

    NSString *imageString = [[NSString alloc] initWithBytes: [imgData bytes] length:[imgData length] encoding:NSUTF8StringEncoding]; 

    //NSLog(@"Image Data: %@", imageString); it returns Nothing except "Image Data: " 

    [picker dismissModalViewControllerAnimated:YES]; 
    [picker.view removeFromSuperview]; 
    [picker release]; 
} 

답변

0
+ (NSString*)base64forData:(NSData*)theData { 
    const uint8_t* input = (const uint8_t*)[theData bytes]; 
    NSInteger length = [theData length]; 

    static char table[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/="; 

    NSMutableData* data = [NSMutableData dataWithLength:((length + 2)/3) * 4]; 
    uint8_t* output = (uint8_t*)data.mutableBytes; 

    NSInteger i; 
    for (i=0; i < length; i += 3) { 
     NSInteger value = 0; 
     NSInteger j; 
     for (j = i; j < (i + 3); j++) { 
      value <<= 8; 

      if (j < length) { 
       value |= (0xFF & input[j]); 
      } 
     } 

     NSInteger theIndex = (i/3) * 4; 
     output[theIndex + 0] =     table[(value >> 18) & 0x3F]; 
     output[theIndex + 1] =     table[(value >> 12) & 0x3F]; 
     output[theIndex + 2] = (i + 1) < length ? table[(value >> 6) & 0x3F] : '='; 
     output[theIndex + 3] = (i + 2) < length ? table[(value >> 0) & 0x3F] : '='; 
    } 

    return [[[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding] autorelease]; 
} 
+0

너무 – Neutralizer

+1

이 기능에있는 NSData 객체를 전달하는 것도 반환하지거야? 해당 nsdata 개체를 인쇄하려고했습니다. – Saurabh

+0

아니요, NSData 개체를 인쇄하지 않았습니다. 나는이 함수에 전달했다. – Neutralizer

관련 문제