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);
你做了什么调试?什么存在?你运行的是哪个版本的iOS? – Wain
为什么你认为拥有图像的NSData可以转换为UTF8Encoded字符串? NSData可以在数据的任何地方都有一个空字符,从而结束字符串并释放剩余的内存。这是一个非常糟糕的技术。我不确定为什么你需要从你的图像64位字符串,但你可以检查这个链接了64位NSData编码:https://github.com/l4u/NSData-Base64 – Putz1103
找到了类似的解决方案。见下文:D – jimbob