2017-01-07 13 views
0

Ich bin neu auf iPhone, ich möchte Bild in das Album speichern & Ich möchte diesen Bildpfad. Ich habe das schon gemacht.speichern benutzerdefinierte Kamera erfassen Bild iOS Xcode

Jetzt möchte ich einen benutzerdefinierten Namen für Bild & speichern Bild mit diesem Namen. Ich habe den folgenden Code verwendet, aber ich bekomme kein Bild in das Album.

Kann mir jemand sagen wo ich falsch liege?

#pragma mark - Image Picker Controller delegate methods 

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

    UIImage *chosenImage = info[UIImagePickerControllerEditedImage]; 
    self.imageView.image = chosenImage; 

    [picker dismissViewControllerAnimated:YES completion:NULL]; 



// Todo to use custom name comment this line. 
//UIImageWriteToSavedPhotosAlbum(self.imageView.image,nil,nil,nil); 

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    NSString *savedImagePath = [documentsDirectory stringByAppendingPathComponent:@"savedImage.png"]; 
    UIImage *image = imageView.image; // imageView is my image from camera 
    NSData *imageData = UIImagePNGRepresentation(image); 
    [imageData writeToFile:savedImagePath atomically:NO]; 



    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 
     UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil); 
    }); 
} 
+0

Ich denke, es ist nicht möglich.Warum machst du das? Was ist dein Ziel, den Namen Ihres benutzerdefinierten Bildes hinzuzufügen? – sohil

+0

@sohil. dies ist Client-Anforderung, um Bild mit cient1, client2 usw. Wetter zu speichern, sollte ich folgen, Vorschlag aber verwirrt auf Anruf für Bild. – NovusMobile

+1

Sie möchten ein Bild in der Fotogalerie oder im persönlichen Dokumentenverzeichnis speichern? – sohil

Antwort

1

können Sie Bildspeicher mit benutzerdefinierten Namen wie folgt aus:

UIImage *chosenImage = info[UIImagePickerControllerEditedImage]; 

//save image in Document Derectory 
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSLog(@"Get Path : %@",documentsDirectory); 

//create Folder if Not Exist 
    NSError *error = nil; 
    NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:@"/MyFolder"]; 

    if (![[NSFileManager defaultManager] fileExistsAtPath:dataPath]) 
     [[NSFileManager defaultManager] createDirectoryAtPath:dataPath withIntermediateDirectories:NO attributes:nil error:&error]; //Create folder 

    NSString *[email protected]"MyPhotoName"; 
    NSString* path= [dataPath stringByAppendingString:[NSString stringWithFormat:@"/%@.png",customePhotoName]]; 
    NSData* imageData = UIImagePNGRepresentation(chosenImage); 

    [imageData writeToFile:path atomically:YES]; 
    NSLog(@"Save Image Path : %@",path); 
+0

Vielen Dank. Ich habe das bereits aufgewertet. wenn das funktioniert. Ich werde das akzeptieren. – NovusMobile

+0

Ich habe mein iPhone überprüft. Ich habe kein Foto bekommen. Wo zu sehen, Bild zu erfassen? Ich brauche dasselbe UIImageWriteToSavedPhotosAlbum ?? – NovusMobile

+1

@NovusMobile es wird nicht auf Ihrem iPhone speichern Photo Gallary ist es auf Dokumentenverzeichnis Ordner speichern. Wenn Sie das Bild in der Fotobibliothek speichern möchten, geben Sie "UIImageWriteToSavedPhotosAlbum (image, nil, nil, nil)" ein. als Schreiben Sie diesen Code, aber es wird nicht Bild Name auf Fotos angezeigt. – sohil

1

In einem meinem Projekt habe ich dies:

let directory = "yourDirectoryName" 
let fileName = "file.png" 
let directoryPath = NSHomeDirectory() + "/Library/Caches/\(directory)" 
do { 
    try NSFileManager.defaultManager().createDirectoryAtPath(directoryPath, withIntermediateDirectories: true, attributes: nil) 
    UIImagePNGRepresentation(image)?.writeToFile(directoryPath+fileName), atomically: true) 
} catch let error as NSError {} 

-Code funktioniert in Swift 2.3. Ich hoffe, das ist was du willst.

+0

Ja. Aber soll ich das nach der didfinishPickingMediawithInfo Funktion oder anderswo nennen? – NovusMobile

+0

Ja, ich benutze es in der didfinishPickingMediawithInfo Funktion – Axel

+0

objektive c :: NSHomeDirectory() gibt Fehler Buddy – NovusMobile

1

Überprüfen Sie, ob NSData und UIImage Objekte den Code unten ich überprüfen, um eine richtige, setzen Sie „atomar“, wie JA, sind:

//Save your image with a completion selector 
UIImageWriteToSavedPhotosAlbum(image, self, @selector(image:didFinishSavingWithError:contextInfo:), nil); 

//Completion selector 
- (void) image: (UIImage *) image 
didFinishSavingWithError: (NSError *) error 
    contextInfo: (void *) contextInfo 
    { 
     if(error) 
    { 
    NSLog(@"save error :%@", [error localizedDescription]); 

    } 
     else if (!error) 
    { 
      PHAsset *asset = [self fetchImageAsset]; 
    } 
} 

    //Fetch image based on create date or whatever naming system you follow 
- (nullable PHAsset *)fetchImageAsset 
{ 
     PHFetchOptions *fetchOptions = [[PHFetchOptions alloc] init]; 
     fetchOptions.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:YES]]; 
     PHFetchResult *fetchResult = [PHAsset fetchAssetsWithMediaType:PHAssetMediaTypeImage options:fetchOptions]; 
     PHAsset *lastAsset = [fetchResult lastObject]; 
     return lastAsset; 

    } 
+0

Ich bin sehr neu dazu. aber ich habe deinen Standpunkt nicht verstanden. Ich habe den ersten Teil verstanden, um UIImageWriteToSavedPhotoAlbum zu speichern, habe aber nichts anderes bekommen. Ich denke, dass ich mehr über iPhone Klasse zuerst lernen muss. Danke für Ihre Antwort. Führt dies nach didfinishmetho ... – NovusMobile

+1

"Selector" bedeutet einfach eine Funktion und "Completion Selector" bedeutet die Methode, die bei der Fertigstellung Ihrer Aufgabe ausgeführt wird. Du könntest diesen Methodennamen in "UIImageWriteToSavedPhotosAlbum" als Parameter übergeben und du wirst den Fehler (NSError) erhalten, während du das Bild auf den angegebenen Pfad schreibst, um herauszufinden, was falsch ist. PHAsset ist eine objektive C-Klasse, die beim Speichern und Abrufen von Medienressourcen verwendet wird. Bitte abstimmen. Prost ! –

+0

Haben Sie eine Referenz für die iPhone-Tutorials für Anfänger? – NovusMobile

Verwandte Themen