0

我正在拍照并使用captureOutput:didFinishProcessingPhoto.

我需要将照片 (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。为什么?

4

1 回答 1

0

感谢@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"];
}
于 2021-10-12T23:21:46.967 回答