iOS-使用ALAssetsLibrary获取相册图片视频
用ALAssetsLibrary获取相册图片视频
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
[library enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos
usingBlock:^(ALAssetsGroup *group, BOOL *stop) {
// Filter down to only photos
[group setAssetsFilter:[ALAssetsFilter allPhotos]];
// Grab the first photo return
[group enumerateAssetsAtIndexes:[NSIndexSet indexSetWithIndex:]
options:
usingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop) {
if (result) {
id repressentation = [result defaultRepresentation];
// 可以生产一个AVAsset
NSURL *url = [repressentation url];
AVAsset *asset = [AVAsset assetWithURL:url];
// 也可以直接获取image
self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageWithCGImage:[repressentation fullResolutionImage]]];
}
}];
} failureBlock:^(NSError *error) {
NSLog(@"Error: %@", [error localizedDescription]);
}];
使用AVAsset加载资源:
NSURL *assetURL = [[NSBundle mainBundle] URLForResource:@"guitar" withExtension:@"caf"];
AVAsset *asset = [AVAsset assetWithURL:assetURL];
NSArray *keys = @[@"tracks"];
[asset loadValuesAsynchronouslyForKeys:keys completionHandler:^{
NSError *error = nil;
AVKeyValueStatus status = [asset statusOfValueForKey:@"tracks" error:&error];
switch (status) {
case AVKeyValueStatusLoaded:
// 加载完资源 to do
NSLog(@"加载完");
break;
case AVKeyValueStatusFailed:
// 加载失败 to do
NSLog(@"加载失败");
break;
case AVKeyValueStatusCancelled:
// 加载取消 to do
NSLog(@"加载取消");
break;
default:
break;
}
}];
获得元数据
NSURL *assetURL = [[NSBundle mainBundle] URLForResource:@"" withExtension:@"m4a"];
AVAsset *asset = [AVAsset assetWithURL:assetURL];
NSArray *keys = @[@"availableMetadataFormats"];
[asset loadValuesAsynchronouslyForKeys:keys completionHandler:^{
NSMutableArray *metadata = [NSMutableArray array];
for (NSString *format in asset.availableMetadataFormats) {
[metadata addObjectsFromArray:[asset metadataForFormat:format]];
}
NSLog(@"meta format: %@", metadata);
NSString *keySpace = AVMetadataKeySpaceiTunes;
NSString *artistKey = AVMetadataiTunesMetadataKeyArtist;
NSString *albumKey = AVMetadataiTunesMetadataKeyAlbum;
NSArray *artistMetadata = [AVMetadataItem metadataItemsFromArray:metadata
withKey:artistKey
keySpace:keySpace];
NSArray *albumMetadata = [AVMetadataItem metadataItemsFromArray:metadata
withKey:albumKey
keySpace:keySpace];
AVMetadataItem *artistItem, *albumItem;
if (artistMetadata.count > ) {
artistItem = artistMetadata[];
}
if (albumMetadata.count > ) {
albumItem = albumMetadata[];
}
}];
使用AVMetadataItem
NSURL *assetURL = [[NSBundle mainBundle] URLForResource:@"" withExtension:@"m4a"];
AVAsset *asset = [AVAsset assetWithURL:assetURL];
NSArray *metadata = [asset metadataForFormat:AVMetadataFormatiTunesMetadata];
for (AVMetadataItem *item in metadata) {
NSLog(@"%@: %@", item.key, item.value);
}
iOS-使用ALAssetsLibrary获取相册图片视频的更多相关文章
- IOS多选单选相册图片
之前做项目让实现多选相册的图片,自己写了一个demo一直保存在电脑上,今天下午发现电脑128G的容量已经快没有了,准备清理电脑,所以把之前做的一些demo放在博客上,以后方便用. 1.首先准备3个图片 ...
- android开发之——获取相册图片和路径
Android开发获取相册图片的方式网上有很多种,这里说一个Android4.4后的方法,因为版本越高,一些老的api就会被弃用,新的api和老的api不兼容,导致出现很多问题. 比如:managed ...
- Swift中获取相册图片与保存到相册
关于这个网上目前位置记录的资料比较少,记录一下这个坑 获取相册图片 1: var iPC = UIImagePickerController() 2: iPC.sourceType = UIImage ...
- ios获取相册图片 压缩图片
从摄像头/相册获取图片 刚刚在上面的知识中提到从摄像头/相册获取图片是面向终端用户的,由用户去浏览并选择图片为程序使用.在这里,我们需要过UIImagePickerController类来和用户交互. ...
- uniapp+nvue实现仿微信/得物相册插件:选择界面 +自定义相册+图片视频过滤
本篇文章基于uniapp 框架+ nvue,实现了uniapp仿微信/得物相册选择功能实例项目,该插件实例实现了以下功能: 1: 相册过滤 2: 图视频过滤 3: 界面UI定制化 4: 栅格列数定制化 ...
- Android获取相册图片
1. AlertDialog的使用 2. 显示和隐式意图的区别 3. 相册页面的跳转 4. 选择完成后返回图片的获取 ----------------------------------------- ...
- iOS开发—— UIImagePickerController获取相册和拍照
一.简单的拍照显示,或是从相册中直接选取照片 #import "ViewController.h" @interface ViewController ()<UIImageP ...
- Android 打开照相机、获取相册图片、获取图片并裁减
一.调用照相机 注:surfaceView在当Activity不在前台的时候,会被销毁(onPause方法之后,执行销毁方法)当Activity回到前台时,在Activity执行onResume方法之 ...
- 照片大管家iOS-实现本地相册、视频、安全保护、社交分享一站式功能,源码开放
<照片大管家> APP功能: 1.本地照片批量导入与编辑 2.本地视频存储与播放 3.手势密码.数字密码.TouchID安全保护 4.QQ.微信.微博.空间社交分享 5.其他细节功能. 运 ...
随机推荐
- 插入排序 Insertion Sort
插入排序算法的运作如下: 通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入. 插入排序算法的实现我放在这里. 时间/空间复杂度: 最差时间复杂度 O(n^2) 最优时间 ...
- $《第一行代码:Android》读书笔记——第13章 Android高级技巧
(一)全局获取Context 1.创建ApplicationUtil类继承自Application类: public class ApplicationUtil extends Application ...
- Android 平台电容式触摸屏的驱动基本原理
Android 平台电容式触摸屏的驱动基本原理 Android 平台电容式触摸屏硬件基本原理 Linux 与 Android 的多点触摸协议 Linux输入子系统:事件的编码
- OS路径模块命令
os.remove():删除指定文件os.rmdir():删除指定目录os.mkdir():创建单级目录os.makedirs():创建多级目录os.listdir(dirname):列出dirnam ...
- ARC管理内存(一)
相关概念 栈 当程序执行某个方法(或函数)时,会从内存中名为栈(stack)的区域分配一块内存空间,这块内存空间称为帧(frame).帧负责保存程序在方法内声明的变量的值.在方法内声明的变量称为局部变 ...
- servlet原理分析
一.Servlet简介 Servlet是sun公司提供的一门用于开发动态web资源的技术. Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向 ...
- IDEA中集成JRebel插件
下载下面2个插件 jr-ide-intellij-6.4.3_13-16.zip --- 官网的jar(地址:https://plugins.jetbrains.com/plugin/4441-jre ...
- keepalived检测脚本及注意事项
keepalived检测脚本的作用及注意事项: 默认每隔3秒钟执行一次检测脚本,检查nginx服务是否启动,如果没启动就把nginx服务启动起来,如果启动不成功,就把keepalived服务down掉 ...
- 监控pbs运行状况
# 监控内存使用情况 job_id=163997workdir=/share_bio/echo "population_sizes" >> $workdir/pbs/p ...
- awk实现替换字符串中指定位置之间的内容
# 显示第xx行的第yy列的一个字符sed -n 'xx,xxp' file | awk '{print substr($0,yy,1);}' # 修改第xx行的第yy列的一个字符Chr,并保存为新文 ...