MacOS X

Objective-Cで画像をbase64エンコードして、NSStringに変換


Objective-Cでサーバー連携する際、画像をNSStringにするとDBにそのまま突っ込めるので、便利になります。
iOS7からは、base64カテゴリからも解放されるので、嬉しいです。
以下サンプル。
[ ViewController.m 抜粋 ]
--------------------------------------------------
//UIImageをNSStringに変換。その際に+を%2Bとする。
- (NSString *)encodeToBase64String:(UIImage *)image {
    NSData * data = [UIImagePNGRepresentation(image) base64EncodedDataWithOptions:NSDataBase64Encoding64CharacterLineLength];
    return [[NSString stringWithUTF8String:[data bytes]] stringByReplacingOccurrencesOfString:@"+" withString:@"%2B"];
}
- (UIImage *)decodeBase64ToImage:(NSString *)strEncodeData {
    NSData *data = [[NSData alloc]initWithBase64EncodedString:strEncodeData options:NSDataBase64DecodingIgnoreUnknownCharacters];
   
    return [UIImage imageWithData:data];
}
//コンバート開始
- (IBAction)startPush:(id)sender
    UIImage* image = [UIImage imageNamed:@"150"];
    NSString* _str = [self encodeToBase64String:image];
    self.textView.text = _str;
    //HTTPでPOSTする。
    [sv doPost:_str];
    //self.imageView.image = [self decodeBase64ToImage:[_str stringByReplacingOccurrencesOfString:@"%2B" withString:@"+"]];
}
//POSTしたデータをサーバー側からそのまま返してみる。
-(void)toNotifyTheResponse:(NSNotification *)notification
{
    //RailsでJSONを返す。
    //要らないダブルクォーテーションを削除
    //エスケープされている改行を改行文字に変換(エスケープ解除)
    NSString*  _str = [[notification userInfo] valueForKey:@"responseString"];
    _str = [_str stringByReplacingOccurrencesOfString:@"\"" withString:@""];
    _str = [_str stringByReplacingOccurrencesOfString:@"\\r\\n" withString:@"\r\n"];
   
    NSLog(@"%@", _str);
    NSLog(@"-------------------------------------------------------------------------------------------------");
    NSString* _str2 = self.textView.text;
    NSLog(@"%@", _str2);
    _str2 = [_str2 stringByReplacingOccurrencesOfString:@"%2B" withString:@"+"];
    if( [_str2 isEqualToString:_str] ){
        NSLog(@"YES!");
    }else{
        NSLog(@"NO");
    }
    self.imageView.image = [self decodeBase64ToImage:_str];
}
[ EOF ]
--------------------------------------------------
楽チンぽんです。
このページの先頭へ