Achtung: iOS 11 liefert bei großen Bildern mit UIImagePickerControllerOriginalImage nicht das original Bild zurück!

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Achtung: iOS 11 liefert bei großen Bildern mit UIImagePickerControllerOriginalImage nicht das original Bild zurück!

    Alle Fotoapp Entwickler aufgepasst. Bei großen Bildern liefert der Schlüssel UIImagePickerControllerOriginalImage nicht das Originalbild zurück.
    Wenn ich zum Beispiel ein Foto mit der Größe 6500 x 6500 Pixel mit dem UIImagePickerController in iOS 10 auswähle und mit dem Schlüßel UIImagePickerControllerOriginalImage das Bild hole, dann hat das Bild die Größe 6500 x 6500 Pixel.

    Unter iOS 11 ist das Bild nur 2048 x 2048 Pixel groß. Es hat mir bereits einige negative Bewertungen eingebracht.


    Die Lösung:

    Quellcode

    1. if(picker.sourceType == UIImagePickerControllerSourceTypePhotoLibrary)
    2. {
    3. __block UIImage *image = (UIImage *) [info objectForKey:UIImagePickerControllerOriginalImage];
    4. if (@available(iOS 11.0, *))
    5. {
    6. PHAsset * asset = (PHAsset*)[info objectForKey:UIImagePickerControllerPHAsset];
    7. PHImageManager *manager = [PHImageManager defaultManager];
    8. PHImageRequestOptions *requestOptions = [[PHImageRequestOptions alloc] init];
    9. requestOptions.resizeMode = PHImageRequestOptionsResizeModeExact;
    10. requestOptions.deliveryMode = PHImageRequestOptionsDeliveryModeHighQualityFormat;
    11. requestOptions.synchronous = true;
    12. [manager requestImageForAsset:asset
    13. targetSize:PHImageManagerMaximumSize
    14. contentMode:PHImageContentModeDefault
    15. options:requestOptions
    16. resultHandler:^void(UIImage *img, NSDictionary *info) {
    17. if(img != nil)
    18. {
    19. image = img;
    20. }
    21. }];
    22. }
    23. // use the original image now
    24. }
    Alles anzeigen