0
Я пытаюсь преобразовать UIImage в NSData, а затем NSData в Base64 string.Данные UIImage возвращаются как null
Вот мой метод для обработки изображения:
- (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