I have a photo I want my user to be able to share on Instagram and I need to get the local file directory of the photo.
However I am fetching my images as a PHAsset (not the ALAsset all the other answers seem to cover on this subject).
Looking at the PHAsset documentation I don't see a 'local directory' variable.
Do you know how I can get the path to a photo from the users camera roll using the new ios8 Photo's framework?
Here is my code for loading the last image in the users photo roll
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)
}
}
Use content editing input:
asset.requestContentEditingInput(with: PHContentEditingInputRequestOptions()) { (input, _) in
let url = input.fullSizeImageURL
}
Make sure that the asset is PHAssetMediaType.Image
or otherwise it may crash when unpacking an optional.
func getImagesFromAsset(anAsset: PHAsset) {
PHImageManager.default().requestImage(for: anAsset, targetSize: CGSize(width: 600, height: 600), contentMode: .aspectFill, options: nil, resultHandler: { (image, info) in
//resultHandler have info ([AnyHashable: Any])
print(info!["PHImageFileURLKey"])
if let img = image {
self.imgv.image = img
}
})
}
this might help paste this in you CellForRowAt method and pass the PHAsset in argument.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With