UIImagePickerController bug

Ich glaube ich habe einen bug im aktuellen iOS 7 durch ausführen einer app mit Basis-SDK setzen auf iOS 6.1 (evtl. auch niedrigere Versionen, getestet noch nicht, dass noch raus)

Habe ich dieses Bild in meinem Foto-Bibliothek: http://i.imgur.com/7KUIGLt.jpg

Präsentiere ich einen UIImagePickerController über:

UIImagePickerController *vc = [[UIImagePickerController alloc] init];
vc.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
vc.delegate = self;
vc.allowsEditing = YES;
[self presentViewController:vc animated:YES completion:nil];

Ich speichern das ausgewählte Bild zu meinem desktop (den ich bin mit dieser auf-simulator, aber das funktioniert auf dem Gerät auch)

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {

    UIImage* outputImage = [info objectForKey:UIImagePickerControllerEditedImage];
    if (outputImage == nil) {
        outputImage = [info objectForKey:UIImagePickerControllerOriginalImage];
    }
    NSData *d = UIImagePNGRepresentation(outputImage);
    [d writeToFile:@"/Users/Admin/Desktop/test.png" atomically:YES];
    [self dismissViewControllerAnimated:YES completion:nil];
}

Es ergibt sich das folgende Bild:
UIImagePickerController bug

Beachten Sie die großen schwarzen Balken auf der rechten Seite. Was ist die Ursache?

Zu reproduzieren, die Sie benötigen:

  • iOS 7
  • App mit Basis-SDK Satz 6.1 (vielleicht sogar noch niedriger-SDKs, die auch ich noch nicht versucht)
  • iPhone 5/5c/5s
  • Geschieht nur Bilder wurden aufgenommen mit iPhone 5/5c/5s Kamera (Sie können das ursprüngliche Bild, das ich weiter oben verlinkt zum testen)

HINWEIS: Nur klar zu sein, der schwarze Balken ist Teil des eigentlichen Bildes. Das Bild, das Sie sehen, es gibt nicht einen screenshot von einem UIImageView, aber das eigentliche Bild auf der Festplatte gespeichert und hier hochgeladen...

  • Naja deine Quelle eingestellt UIImagePickerControllerSourceTypePhotoLibrary, so dass es scheint, Sie sind nicht die eigentliche Kamera, aber die Abholung von Bildern aus der Bibliothek. Richtig ?
  • Ich habe gesehen, Probleme wie diese mit den bearbeiteten Bildern und/oder gedrehten Bildern. Tritt dies für Aufnahmen in anderen Orientierungen? Passiert, wenn Sie nicht zulassen, dass die Bearbeitung?
  • Dies gelingt, wenn Sie die Bearbeitung rect? Eines dieser Probleme sahen wir nur geschehen, wenn der Benutzer akzeptiert die Standard-Ernte-rect.
  • ja, es passiert nur, wenn die Bilder ausgewählt sind aus der Bibliothek. Wenn Sie ergriffen werden von der Kamera innerhalb der app, es funktioniert gut.
  • Können Sie das klären? Was ist das Problem hier, ist der schwarze Balken soll es sein?
  • Ich vermute, das hat etwas zu tun mit Metadaten-handling, speziell mit der Orientierung und Größe. Ein Teil der interne code kann denken, Orientierung, während andere kann nicht beim Umgang mit Bild-Größe.Ich kann es nicht überprüfen jetzt aber UIImage.Größe (iOS 5) Rückgabewert denen sich die Orientierung des Bildes, während CGImageGetWidth/Höhe nicht wäre. Da output image B und h gleich sind und der zusätzliche Balken ist schwarz, Ziel-Bild gewesen sein könnte, hergestellt aus original-Bild, das sich in calloc würde cgbitmapcontext mit falschen (ratio) Größe.Was passiert, wenn Sie speichern, um UIImageJPEGRepresentation?
  • Nicht wirklich-Metadaten.. Die CropRect Werte sind falsch. Überprüfen Sie heraus die Antwort, die ich gerade Hinzugefügt. Schön finden 0xSina!
  • Gut gemacht 0xSina -- dies ist eine klare und offensichtliche Apple-bug. Es ist wirklich überraschend, ich denke das ist DIE EINZIGE Frage auf das Thema.
  • PS related stackoverflow.com/questions/4094533/...

InformationsquelleAutor 0xSina | 2013-10-16
Schreibe einen Kommentar