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:
Alles anzeigen
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
- if(picker.sourceType == UIImagePickerControllerSourceTypePhotoLibrary)
- {
- __block UIImage *image = (UIImage *) [info objectForKey:UIImagePickerControllerOriginalImage];
- if (@available(iOS 11.0, *))
- {
- PHAsset * asset = (PHAsset*)[info objectForKey:UIImagePickerControllerPHAsset];
- PHImageManager *manager = [PHImageManager defaultManager];
- PHImageRequestOptions *requestOptions = [[PHImageRequestOptions alloc] init];
- requestOptions.resizeMode = PHImageRequestOptionsResizeModeExact;
- requestOptions.deliveryMode = PHImageRequestOptionsDeliveryModeHighQualityFormat;
- requestOptions.synchronous = true;
- [manager requestImageForAsset:asset
- targetSize:PHImageManagerMaximumSize
- contentMode:PHImageContentModeDefault
- options:requestOptions
- resultHandler:^void(UIImage *img, NSDictionary *info) {
- if(img != nil)
- {
- image = img;
- }
- }];
- }
- // use the original image now
- }