ALAsset和ALAssetRepresentation
ALAsset类代表相册中的每个资源文件,可以通过它获取资源文件的相关信息还能修改和新建资源文件,ALAssetRepresentation类代表相册中每个资源文件的详细信息,可以通过它获取资源的大小,名字,路径等详细信息。
//通过ALAsset获取相对应的资源,获取图片的等比缩略图,原图的等比缩略 CGImageRef ratioThum = [asset aspectRatioThumbnail]; //获取相片的缩略图,该缩略图是相册中每张照片的poster图 CGImageRef thum = [asset thumbnail]; UIImage* rti = [UIImage imageWithCGImage:ratioThum]; UIImage* ti = [UIImage imageWithCGImage:thum]; UIImageView* v1 = [[UIImageView alloc]initWithFrame:CGRectMake(20, 100, 120, 200)]; v1.image = rti; v1.contentMode = UIViewContentModeScaleAspectFit; UIImageView* v2 = [[UIImageView alloc]initWithFrame:CGRectMake(180, 100, 120, 200)]; v2.image = ti; v2.contentMode = UIViewContentModeScaleAspectFit; [self.view addSubview:v1]; [self.view addSubview:v2];
左侧为等比缩略图效果,右侧为poster效果的缩略图
UIImage* ni = [UIImage imageNamed:@"new.png"]; //修改指定路径的图片资源内容,替换掉原来的内容 [asset setImageData:UIImageJPEGRepresentation(ni, 1.0) metadata:nil completionBlock:^(NSURL *assetURL, NSError *error) { NSLog(@"new:%@",assetURL); }]; //根据给定的图片内容,重新生成一张新图 [asset writeModifiedImageDataToSavedPhotosAlbum:UIImageJPEGRepresentation(ni, 1.0) metadata:nil completionBlock:^(NSURL *assetURL, NSError *error) { NSLog(@"new:%@",assetURL); }]; //获取资源图片的详细资源信息 ALAssetRepresentation* representation = [asset defaultRepresentation]; //获取资源图片的长宽 CGSize dimension = [representation dimensions]; //获取资源图片的高清图 [representation fullResolutionImage]; //获取资源图片的全屏图 [representation fullScreenImage]; //获取资源图片的名字 NSString* filename = [representation filename]; NSLog(@"filename:%@",filename); //缩放倍数 [representation scale]; //图片资源容量大小 [representation size]; //图片资源原数据 [representation metadata]; //旋转方向 [representation orientation]; //资源图片url地址,该地址和ALAsset通过ALAssetPropertyAssetURL获取的url地址是一样的 NSURL* url = [representation url]; NSLog(@"url:%@",url); //资源图片uti,唯一标示符 NSLog(@"uti:%@",[representation UTI]);