2015-02-04 9 views
17

Ich habe ein Foto Ich möchte, dass mein Benutzer auf Instagram teilen kann und ich brauche das lokale Dateiverzeichnis des Fotos.Holen Sie sich den lokalen Dateipfad eines PHAsset

Allerdings hole ich meine Bilder als PHAsset (nicht die ALAsset alle anderen Antworten scheinen zu diesem Thema zu decken).

Mit Blick auf die PHAsset-Dokumentation sehe ich keine 'lokale Verzeichnis' Variable.

Wissen Sie, wie ich den Weg zu einem Foto von der Kamera des Benutzers mit dem neuen ios8 Photo's Framework bekommen kann?

Hier ist mein Code, um das letzte Bild in der Benutzer Fotoroll

public func loadLastPhotoIntoGalleryIcon() 
{ 
    if(PHPhotoLibrary.authorizationStatus() != PHAuthorizationStatus.Authorized) 
    { 
     return 
    } 
    var fetchOptions:PHFetchOptions = PHFetchOptions() 
    fetchOptions.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: false)] 
    var fetchResult:PHFetchResult = PHAsset.fetchAssetsWithMediaType(PHAssetMediaType.Image, options: fetchOptions) 

    var lastAsset:PHAsset = fetchResult.firstObject as PHAsset 

    var options:PHImageRequestOptions = PHImageRequestOptions() 
    options.version = PHImageRequestOptionsVersion.Current 
    PHImageManager.defaultManager().requestImageForAsset(lastAsset, targetSize: _view.getGalleryIconSize(), contentMode: PHImageContentMode.AspectFill, options: options) 
    { 
     (result, objects) -> Void in 
     self._view.setGalleryIcon(result) 
    } 

} 

Antwort

7

Verwenden Inhaltsbearbeitung Eingang zum Laden:

asset.requestContentEditingInputWithOptions(PHContentEditingInputRequestOptions()) { (input, _) in 
    let url = input.fullSizeImageURL 
} 

Stellen Sie sicher, dass der Vermögenswert PHAssetMediaType.Image ist oder sonst kann es zum Absturz bringen, wenn ein optionales auspacken.

+2

input.fullSizeImageURL kann das Bild auf dem Gerät nicht laden, obwohl es am Simulator arbeitet – Abhishek

0

Ja, Sie müssen PHAsset zu ALAsset konvertieren, dann können Sie die URL von ALAsset greifen. Ähnliches: PHImageManager.defaultManager() .requestAVAssetForVideo ....

-1

Fordert Asset-Informationen zum Starten einer Inhaltsbearbeitungssitzung an.

- (PHContentEditingInputRequestID)requestContentEditingInputWithOptions:(PHContentEditingInputRequestOptions *)options 
                 completionHandler:(void (^)(PHContentEditingInput *contentEditingInput, NSDictionary *info))completionHandler; 

Die URL zu einer Datei, die die Bilddaten in voller Größe enthält.