2013-12-20 4 views
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); 
+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. Это волшебство.

Смежные вопросы