данные exif в представлении изображения NSData - PullRequest
3 голосов
/ 08 октября 2011

Я пытаюсь создать плагин PhoneGap, который использует AFFoundation для захвата фотографий и возврата изображения в виде строки в кодировке base64. Это все работает нормально, но данные exif, кажется, отсутствуют в возвращенном изображении. Попробовал несколько вариантов и получил несколько указателей на другие вопросы, задаваемые здесь, но, похоже, все еще не работает правильно. Текущий код

    NSMutableString *stringToReturn = [NSMutableString stringWithString: @""];
NSLog(@"about to request a capture from: %@", stillImageOutput);
[stillImageOutput captureStillImageAsynchronouslyFromConnection:videoConnection completionHandler:^(CMSampleBufferRef imageBuffer, NSError *error) 
    {
    if (imageBuffer != NULL)
        {
        CFDictionaryRef exifAttachments = CMGetAttachment(imageBuffer, kCGImagePropertyExifDictionary, NULL);   
        CFMutableDictionaryRef mutable;
        if (exifAttachments)
            {
            //
            // Set orientation
            //
            mutable = CFDictionaryCreateMutableCopy(NULL, 0, exifAttachments);
            int orientation = (int)[UIDevice currentDevice].orientation;
            CFDictionaryAddValue(mutable, kCGImagePropertyOrientation, CFNumberCreate(NULL, kCFNumberIntType, &orientation));
            CMSetAttachments(imageBuffer, mutable, kCMAttachmentMode_ShouldPropagate);
            NSLog(@"attachements: %@", mutable);
            }
        //
        // Get the image
        //
        NSData *imageData = [AVCaptureStillImageOutput jpegStillImageNSDataRepresentation:imageBuffer];
        [stringToReturn setString:[imageData base64EncodedString]];
        //
        // Call the success callback
        //
        [self performSelectorOnMainThread:@selector(doSuccessCallback:) withObject:[NSString stringWithString:stringToReturn] waitUntilDone:NO];
        //
        // Save it to the photo album
        // It is done after we did the success callback to avoid accidental issues with
        // the photo album stopping further processing
        //
        UIImage *image = [[UIImage alloc] initWithData:imageData];
        UIImageWriteToSavedPhotosAlbum(image, self, @selector(image:didFinishSavingWithError:contextInfo:), nil);
        }
    }];

Может кто-нибудь пролить свет, пожалуйста? Кажется, я застрял здесь.

...