Ich habe ein Problem bei der Implementierung einer Kamera View Controller für eine iOS App, die ich gerade arbeite. Wenn eine Taste gedrückt wird, habe ich ein Singleton-Kamera-Objekt, das die AVFoundation
Seite der Dinge verwaltet und das Bild erfasst. Wie Sie unten sehen können, übergebe ich, sobald die UIImage
von der Kamera erfasst wurde, einen Completion-Block, der sie benutzt.PHAssetChangeRequest fehlgeschlagen für UIImage mit Kamera genommen
Bei der ersten Methode handelt es sich um eine Aktion, die ausgelöst wird, wenn die Aufnahmetaste auf der Kamera gedrückt wird. Zuerst wird die Kameraebene angehalten, indem die Verbindung auf der Vorschauebene deaktiviert und das Bild aufgenommen wird. Dann erfasst das Kameraobjekt den Wert UIImage
. An dieser Stelle entferne ich den Kameravorschau-Layer aus der Ansicht und fügt stattdessen eine Unteransicht UIImageView
mit dem aufgenommenen Bild an dessen Stelle ein.
Als nächstes möchte ich das Bild zu dem Album hinzufügen, das ich in Photos mit dem Photos-Framework erstellt habe. Ich kann das Album ohne ein Problem erstellen, und ich habe das Objekt PHAssetCollection
überprüft. Ich verwende in der zweiten Methode die richtige.
Aus irgendeinem Grund kann ich jedoch nicht die UIImage
, die ich in das Album aufnehmen, hinzufügen. Ich habe versucht, dem Album eine zufällige Bilddatei hinzuzufügen, die ich in meinem Projekt hatte, und der Vorgang wurde erfolgreich abgeschlossen. Ich habe auch überprüft, dass das korrekte Bild erfolgreich an die addPhotoToSavedPhotos
-Methode übergeben wird, indem Sie NSLog
-Anweisungen verwenden, um die Bildbeschreibung in beiden Methoden zu überprüfen. Das führt mich zu der Annahme, dass etwas mit dem Bild irgendwie nicht stimmt, aber das ImageView zeigt es erfolgreich an, so dass ich nicht sicher bin, was das sein könnte.
Wenn jemand irgendwelche Ideen von Lösungen hat, könnte ich versuchen, würde ich es schätzen. Auch die error.localizedDescription
aus der NSLog
Anweisung in der zweiten Methode gibt "The operation couldn't be completed
aus. (Cocoa Fehler -1).“
- (IBAction)capturePhoto:(id)sender {
[self pauseCameraLayer];
[[eventCamera sharedInstance] captureStillUIImage:^(UIImage *image, NSError *error){
if(error)
{
NSLog(@"error capturing photo");
}
else
{
NSLog(@"%@",image.debugDescription);
}
[_captureButton setHidden:YES];
[_switchCameraButton setHidden:YES];
UIImageView *preview=[[UIImageView alloc] initWithImage:image];
[preview setAutoresizesSubviews:YES];
[preview setContentMode:UIViewContentModeScaleAspectFit];
[preview setTransform:CGAffineTransformMakeRotation(M_PI_2)];
preview.frame=_imageView.bounds;
[_imageView addSubview:preview];
[self addPhotoToSavedPhotos:[image copy]];
NSLog(@"1: %@",image.description);
}];
-(void)addPhotoToSavedPhotos:(UIImage*)photo
{
PHAssetCollection *myCollection=[self getAPPCollection];
[[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{
//Perform changes to photo library
PHAssetChangeRequest *req=[PHAssetChangeRequest creationRequestForAssetFromImage:photo];
PHAssetCollectionChangeRequest *assetChangeRequest=[PHAssetCollectionChangeRequest changeRequestForAssetCollection:myCollection];
[assetChangeRequest addAssets:[NSArray arrayWithObject:req.placeholderForCreatedAsset]];
//[libReq addAssets:@[assetPlaceHolder]];
}completionHandler:^(BOOL success, NSError *error){
//Perform any necessary actions after adding the photo to the photo
//library
if(!success)
{
NSLog(@"didn't succeed, error: %@",error.localizedDescription);
}
}];
}
behebe Sie das? – kondratyevdev
können Sie uns bitte sagen, was wird im Protokoll gedruckt? –
Es kann ein Fehler irgendwo hier sein Ich schätze selbst fügePhotoToSavedPhotos hinzu: [image copy]]; Versuchen Sie einen BreakPoint in - (void) addPhotoToSavedPhotos: (UIImage *) Fotofunktion hinzuzufügen und prüfen Sie, ob ein Foto an diese Funktion übergeben wird. –