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.其他细节功能. 运 ...
随机推荐
- 数据库之MySQL(二)
数据表基本 1.创建表 create table 表名( 列名 类型 是否可以为空, 列名 类型 是否可以为空)ENGINE=InnoDB DEFAULT CHARSET=utf8 是 ...
- Python排列组合
product 笛卡尔积 (有放回抽样排列) permutations 排列 (不放回抽样排列) combinations 组合,没有重复 (不放回抽样组合) combinations_with_re ...
- 001-centos7安装 笔记本 联想G510
一.准备前提 1.联想G510AT 用winpe进入笔记本电脑,找到一个分区,删除即可 2.使用U盘安装 2.1.准备一个8G 的U盘,格式化ntfs. 2.2.在window下,下载UltraISO ...
- HackerRank - maximum-perimeter-triangle 【水】
题意 给出一系列数字,判断其中哪三个数字可以构成一个三角形,如果有多个,输出周长最大的那个,如果没有输出 - 1 思路 数据较小,所有情况FOR一遍 判断一下 AC代码 #include <cs ...
- Python学习进程(2)Python环境的搭建
本节主要介绍在windows和Linux平台上如何搭建Python编程环境. (1)查看Python版本: windows: C:\Users\JMSun>python 'pyt ...
- token的生成和应用
token的生成和应用 接口特点汇总: 1.因为是非开放性的,所以所有的接口都是封闭的,只对公司内部的产品有效: 2.因为是非开放性的,所以OAuth那套协议是行不通的,因为没有中间用户的授权过程: ...
- awk的内置函数
常见awk内置数值函数
- 【HackerRank】 Sherlock and The Beast
Sherlock and The Beast Sherlock Holmes is getting paranoid about Professor Moriarty, his archenemy. ...
- this 机制的四种规则
江湖人称,谁调用 this,this 就指向谁. 那么 this 到底绑定或者引用的是哪个对象环境呢,以下便是四种规则 1. 默认绑定全局变量 function fn() { console.log( ...
- 20145231《Java程序设计》第五次实验报告
实验五 Java网络编程及安全 实验内容 1.掌握Socket程序的编写: 2.掌握密码技术的使用: 3.设计安全传输系统. 实验要求 基于Java Socket实现安全传输 基于TCP实现客户端和服 ...