Как преобразовать изображение, снятое с помощью 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"];
}
Другие вопросы по тегам