2014-03-04 9 views
5

Meine Anwendung ermöglicht es einem Benutzer, ein Bild aus der Kamerarolle des Geräts auszuwählen. Ich möchte bestätigen, dass das Format des ausgewählten Bildes entweder ein PNG- oder ein JPG-Bild ist.UIImagePickerController Image Type

ist es möglich, dies in der Delegiertenmethode - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info zu tun?

Antwort

8

Ja, Sie können dies im Delegaten-Rückruf tun. Wie Sie vielleicht bemerkt haben, gibt der Info Dictionary Schlüssel UIImagePickerControllerMediaType eine "public.image" Zeichenfolge als UTI zurück, was für Ihren Zweck nicht ausreicht. Dies kann jedoch mithilfe der URL erfolgen, die dem Schlüssel UIImagePickerControllerReferenceURL im Infowörterbuch zugeordnet ist. Zum Beispiel könnte die Implementierung ähnlich der folgenden Methode aussehen.

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
{ 
    UIImage *image = info[UIImagePickerControllerEditedImage]; 
    NSURL *assetURL = info[UIImagePickerControllerReferenceURL]; 

    NSString *extension = [assetURL pathExtension]; 
    CFStringRef imageUTI = (UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension,(__bridge CFStringRef)extension , NULL)); 

    if (UTTypeConformsTo(imageUTI, kUTTypeJPEG)) 
    { 
     // Handle JPG 
    } 
    else if (UTTypeConformsTo(imageUTI, kUTTypePNG)) 
    { 
     // Handle PNG 
    } 
    else 
    { 
     NSLog(@"Unhandled Image UTI: %@", imageUTI); 
    } 

    CFRelease(imageUTI); 

    [self.imageView setImage:image]; 

    [picker dismissViewControllerAnimated:YES completion:NULL]; 
} 

Sie werden auch gegen MobileCoreServices.framework verlinkt werden müssen und fügen Sie eine #import <MobileCoreServices/MobileCoreServices.h>

Verwandte Themen