Wil*_*con 24 ios swift photosframework
以下代码加载也位于iCloud或流图像上的图像.我们如何将搜索限制为仅限相机胶卷中的图像?
var assets = PHAsset.fetchAssetsWithMediaType(PHAssetMediaType.Image, options: nil)
Run Code Online (Sandbox Code Playgroud)
Sta*_*ort 20
添加Camera Roll和Photo Stream相册后,Apple PHAssetCollectionSubtype在iOS 8.1中添加了以下类型:
PHAssetCollectionSubtypeAlbumMyPhotoStream(连同PHAssetCollectionTypeAlbum) - 获取Photo Stream专辑.
PHAssetCollectionSubtypeSmartAlbumUserLibrary(连同PHAssetCollectionTypeSmartAlbum) - 获取相机胶卷相册.
尚未测试它是否与iOS 8.0.x向后兼容.
通过一些实验,我们发现了一个未在文档(assetSource)中列出的隐藏属性.基本上你必须做一个常规的提取请求,然后使用谓词来过滤相机胶卷中的谓词.该值应为3.
示例代码:
//fetch all assets, then sub fetch only the range we need
var assets = PHAsset.fetchAssetsWithMediaType(PHAssetMediaType.Image, options: fetchOptions)
assets.enumerateObjectsUsingBlock { (obj, idx, bool) -> Void in
results.addObject(obj)
}
var cameraRollAssets = results.filteredArrayUsingPredicate(NSPredicate(format: "assetSource == %@", argumentArray: [3]))
results = NSMutableArray(array: cameraRollAssets)
Run Code Online (Sandbox Code Playgroud)
如果您正在像我一样搜索Objective C代码,并且由于不赞成使用AssetsLibrary的代码而没有得到新库/ Photo Framework的答案,那么这将为您提供帮助: Swift
全局变量:
var imageArray: [AnyObject]
var mutableArray: [AnyObject]
convenience func getAllPhotosFromCamera() {
imageArray = [AnyObject]()
mutableArray = [AnyObject]()
var requestOptions: PHImageRequestOptions = PHImageRequestOptions()
requestOptions.resizeMode = .Exact
requestOptions.deliveryMode = .HighQualityFormat
requestOptions.synchronous = true
var result: PHFetchResult = PHAsset.fetchAssetsWithMediaType(.Image, options: nil)
NSLog("%d", Int(result.count))
var manager: PHImageManager = PHImageManager.defaultManager()
var images: [AnyObject] = [AnyObject](minimumCapacity: result.count)
// assets contains PHAsset objects.
var ima: UIImage
for asset: PHAsset in result {
// Do something with the asset
manager.requestImageForAsset(asset, targetSize: PHImageManagerMaximumSize, contentMode: .Default, options: requestOptions, resultHandler: {(image: UIImage, info: [NSObject : AnyObject]) -> void in
Run Code Online (Sandbox Code Playgroud)
目标C
全局变量:
NSArray *imageArray;
NSMutableArray *mutableArray;
Run Code Online (Sandbox Code Playgroud)
下面的方法将帮助您:
-(void)getAllPhotosFromCamera
{
imageArray=[[NSArray alloc] init];
mutableArray =[[NSMutableArray alloc]init];
PHImageRequestOptions *requestOptions = [[PHImageRequestOptions alloc] init];
requestOptions.resizeMode = PHImageRequestOptionsResizeModeExact;
requestOptions.deliveryMode = PHImageRequestOptionsDeliveryModeHighQualityFormat;
requestOptions.synchronous = true;
PHFetchResult *result = [PHAsset fetchAssetsWithMediaType:PHAssetMediaTypeImage options:nil];
NSLog(@"%d",(int)result.count);
PHImageManager *manager = [PHImageManager defaultManager];
NSMutableArray *images = [NSMutableArray arrayWithCapacity:[result count]];
// assets contains PHAsset objects.
__block UIImage *ima;
for (PHAsset *asset in result) {
// Do something with the asset
[manager requestImageForAsset:asset
targetSize:PHImageManagerMaximumSize
contentMode:PHImageContentModeDefault
options:requestOptions
resultHandler:^void(UIImage *image, NSDictionary *info) {
ima = image;
[images addObject:ima];
}];
}
imageArray = [images copy]; // You can direct use NSMutuable Array images
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24954 次 |
| 最近记录: |