2013-12-20 75 views
0

我想将UIImage转换为NSData,然后将NSData转换为Base64字符串。UIImage数据返回为空

这里是我的处理图像的方法:

- (void)processImage:(UIImage*)image{ 
    dispatch_queue_t myQueue = dispatch_queue_create("My Queue",NULL); 
    [self.spinnerOutlet setAlpha:0.0f]; 
    [self.spinnerOutlet startAnimating]; 

    dispatch_async(myQueue, ^{ 
     NSData *myData = nil; 
     myData = UIImagePNGRepresentation(image); 

     float sysVer = [[[UIDevice currentDevice] systemVersion] floatValue]; 
     if (sysVer >= 7.00) { 
      // Convert image 
      myData = [UIImagePNGRepresentation(image) base64EncodedDataWithOptions:NSDataBase64Encoding64CharacterLineLength]; 
     } 

     NSString *myString = [NSString stringWithUTF8String:[myData bytes]]; 
     snapShotInBase64 = myString; 

     NSLog(@"Snapshot in base64 string: %@", myString); 

     dispatch_async(dispatch_get_main_queue(), ^{ 
      // BACK TO THE UI THREAD 
      [self showSuccessAlertView:@"Great" message:@"Sending Image..."]; 

      isProcessingImage = NO; 
      [self sendImagePostRequest]; 
     }); 
    }); 
} 

的问题是,NSLog的回来空!

NSLog(@"Snapshot in base64 string: %@", myString); 
+0

你做了什么调试?什么存在?你运行的是哪个版本的iOS? – Wain

+0

为什么你认为拥有图像的NSData可以转换为UTF8Encoded字符串? NSData可以在数据的任何地方都有一个空字符,从而结束字符串并释放剩余的内存。这是一个非常糟糕的技术。我不确定为什么你需要从你的图像64位字符串,但你可以检查这个链接了64位NSData编码:https://github.com/l4u/NSData-Base64 – Putz1103

+0

找到了类似的解决方案。见下文:D – jimbob

回答

0

我结束了使用Base64 NSData扩展类。

https://github.com/nicklockwood/Base64

你可以从字面上只是用他Base64.h和.m文件,然后你可以调用一个方法将数据转换为base64。这是神奇的。