Как преобразовать изображение, снятое с помощью captureOutput didFinishProcessingPhoto, в строку, которая будет сохранена в JSON с использованием цели C
Я делаю фото и обрабатываю его с помощью
Мне нужно преобразовать фотографию (AVCapturePhoto) в строку, чтобы я мог отправить ее на сервер в формате JSON. Мне нужно сначала сохранить его в userDefaults, а на последнем экране мне нужно получить его и добавить в JSON / Dictionary.
Я работаю над проектом, который не начинал. Обычно я бы установил это совершенно иначе. В любом случае, теперь это моя проблема.
Я пробую это:
- (void)captureOutput:(AVCapturePhotoOutput *)output didFinishProcessingPhoto:(AVCapturePhoto *)photo error:(NSError *)error {
if (error != nil){
NSLog(@"%s: %@", "Error in capture process", error.debugDescription);
}
NSData *imageData = [photo fileDataRepresentation];
if (imageData == nil){
NSLog(@"%s", "unable to create image data");
}
NSData *photoData = UIImageJPEGRepresentation([[UIImage alloc] initWithData:imageData], 0.0);
NSString *str = [[NSString alloc] initWithData:photoData encoding:NSUTF16StringEncoding];
// UIImage *image = [[UIImage alloc] initWithData:imageData];
// NSData *imageDataObject = UIImageJPEGRepresentation(image, 0.0);
// NSString *photoString = [[NSString alloc] initWithData:imageDataObject encoding:NSUTF8StringEncoding];
// UIImage *image = [[UIImage alloc] initWithData:imageData];
// NSData *imageDataObject = UIImageJPEGRepresentation(image, 0.0);
// NSString *photoString = [[NSString alloc] initWithData:imageDataObject encoding:NSUTF8StringEncoding];
NSUserDefaults *myDefaults = [NSUserDefaults standardUserDefaults];
[myDefaults setObject:str forKey:@"photo"];
}
закомментированный код - это просто неудачные попытки сделать это.
В Swift я реализовал это, создав кодируемый объект как синглтон (никогда не сохранял его по умолчанию) и вызвал эту функцию для данных перед их отправкой:
form.photo = UIImage(data: imageData)?.jpegData(compressionQuality: 0.0)
Мне не так везет с целью c. У меня нет функции jpegData ....
Каждый раз, когда я пытаюсь преобразовать данные, преобразование завершается ошибкой, и я возвращаю значение null. Почему?
1 ответ
Спасибо @Larme за то, что указал мне в правильном направлении. Вот что я придумал:
- (void)captureOutput:(AVCapturePhotoOutput *)output didFinishProcessingPhoto:(AVCapturePhoto *)photo error:(NSError *)error {
if (error != nil){
NSLog(@"%s: %@", "Error in capture process", error.debugDescription);
}
NSData *imageData = [photo fileDataRepresentation];
if (imageData == nil){
NSLog(@"%s", "unable to create image data");
}
UIImage *image = [[UIImage alloc] initWithData:imageData];
NSData *jpegImage = UIImageJPEGRepresentation(image, 0.0);
NSString *base64Str = [jpegImage base64EncodedStringWithOptions:0];
NSUserDefaults *myDefaults = [NSUserDefaults standardUserDefaults];
[myDefaults setObject:base64Str forKey:@"photo"];
}