ALAssetsLibrary-代码操作iOS相册资源
来源:互联网 发布:淘宝店铺大图怎么做 编辑:程序博客网 时间:2024/05/23 16:21
在iOS中,我们调用摄像头和选择相册中的资源,我们可以使用:UIImagePickerController类来完成。
当然,我们也可以不使用UI的形式来访问iOS设备的相册资源。
那就是使用:ALAssetsLibrary
一、ALAssetsLibrary是什么
可以说,是一个桥梁把。连接了我们应用程序和相册之间的访问。
ALAssetsLibrary提供了我们对iOS设备中的相片、视频的访问。
ALAssetsLibrary被封装在 框架中。所以,我们在使用时,需要引入该框架。
贴:
self.view.backgroundColor = [UIColor whiteColor];
self.assetsLibrary = [[ALAssetsLibrary alloc] init];
dispatch_queue_t dispatchQueue =dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0);
dispatch_async(dispatchQueue, ^(void) {
// 遍历所有相册
[self.assetsLibrary enumerateGroupsWithTypes:ALAssetsGroupAll
usingBlock:^(ALAssetsGroup *group, BOOL *stop) {
// 遍历每个相册中的项ALAsset
[group enumerateAssetsUsingBlock:^(ALAsset *result, NSUInteger index,BOOL*stop) {
__block BOOL foundThePhoto = NO;
if (foundThePhoto){
*stop = YES;
}
// ALAsset的类型
NSString *assetType = [result valueForProperty:ALAssetPropertyType];
if ([assetType isEqualToString:ALAssetTypePhoto]){
foundThePhoto = YES;
*stop = YES;
ALAssetRepresentation *assetRepresentation =[result defaultRepresentation];
CGFloat imageScale = [assetRepresentation scale];
UIImageOrientation imageOrientation = (UIImageOrientation)[assetRepresentation orientation];
dispatch_async(dispatch_get_main_queue(), ^(void) {
CGImageRef imageReference = [assetRepresentation fullResolutionImage];
// 对找到的图片进行操作
UIImage *image =[[UIImage alloc] initWithCGImage:imageReferencescale:imageScale orientation:imageOrientation];
if (image != nil){
self.imageView = [[UIImageView alloc] initWithFrame:self.view.bounds];
self.imageView.contentMode = UIViewContentModeScaleAspectFit;
self.imageView.image = image;
[self.view addSubview:self.imageView];
} else {
NSLog(@"Failed to create the image.");
} });
}
}];
}
failureBlock:^(NSError *error) {
NSLog(@"Failed to enumerate the asset groups.");
}];
});
乱啊,没办法,在xCode中是OK的。
需要解释的几点:
1.流程:该代码的流程,就是先遍历所有相册,然后,遍历每个相册中的第一张图片。
2.ALAssetsGroup:指代一个相册。
3.ALAsset:每一个ALAsset代表一个单一资源文件(也就是一张图片,或者一个视频文件)
4.ALAssetRepresentation:ALAssetRepresentation封装了ALAsset,包含了一个资源文件中的很多属性。(可以说是ALAsset的不同的表示方式,本质上都表示同一个资源文件)
- iOS ALAssetsLibrary-代码操作iOS相册资源
- ALAssetsLibrary-代码操作iOS相册资源
- ALAssetsLibrary-代码操作iOS相册资源
- ALAssetsLibrary-代码操作iOS相册资源
- ALAssetsLibrary-代码操作iOS相册资源
- ALAssetsLibrary-代码操作iOS相册资源
- ios 相册操作 ALAssetsLibrary
- iOS --- 使用PhotoKit代替ALAssetsLibrary来管理相册资源
- iOS相册访问 ALAssetsLibrary(获取到相册的图片)+ 图片格式
- ALAssetsLibrary读取相册里面的图片
- ALAssetsLibrary---保存照片到指定相册
- 取相册第一张图片--ALAssetsLibrary使用
- iOS开发获取系统相册资源,自定义相册(PhotoKit)
- iOS开发:如何获取相册资源路径
- iOS开发点滴-ALAssetsLibrary
- iOS----ALAssetsLibrary获取所有图片
- iOS ALAssetsLibrary获取所有图片
- ALAssetsLibrary
- POJ 1463 Strategic game
- Linux下找不到动态链接库
- iOS push跳转页面时,页面透明交叉的问题。
- CSS margin重叠问题
- Gradle 构建 android 应用常见问题解决指南
- ALAssetsLibrary-代码操作iOS相册资源
- Windows下安装PHP的mongo扩展
- 状态DP -- HiHoCoder 1170 Robots
- linux下用valgrind检查程序内存泄漏
- php 参数优化
- 看不见的大猩猩--读书笔记
- Android利用添加自定义布局来搞定触摸事件的分发,解决组合界面中特定控件响应特定方向的事件
- Luence5分钟快速入门示例
- Maven项目打包杂谈