清华大佬耗费三个月吐血整理的几百G的资源,免费分享!....>>>
/**
* 更新联系人的头像属性.
*
* @param aPerson 要更新其头像的联系人.联系人对象又有一个UIImage类型的avatarImage头像属性和一个NSString类型的nameOfdefaultImg默认图片名称属性
* @param assetUrl assetUrl字符串.一种可能的获取方式:<UIImagePickerControllerDelegate>协议方法
* - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
* 的info参数的键UIImagePickerControllerReferenceURL对应的值
* @param defaultImageName 默认图片路径.当无法通过assetUrl获取地址时,会尝试使用此图片地址来获取图片文件.
*/
- (void) updateAvaterImageOfPerson: (CFPerson *) aPerson
assetUrlString: (NSString *) assetUrl
defaultImageName: (NSString *) defaultImageName
{
if (nil == aPerson) { // 联系人对象为空,直接返回.
return;
}
// 是否是应用内置图片?
aPerson.avatarImage = [UIImage imageNamed: assetUrl];
if (nil != aPerson.avatarImage) {
return;
}
// 是否是本地图片?
ALAssetsLibrary *lib = [[[ALAssetsLibrary alloc] init] autorelease];
[lib assetForURL:[NSURL URLWithString:self.avatarName] resultBlock:^(ALAsset *asset)
{
// 使用asset来获取本地图片
ALAssetRepresentation *assetRep = [asset defaultRepresentation];
CGImageRef imgRef = [assetRep fullResolutionImage];
aPerson.avatarImage = [UIImage imageWithCGImage:imgRef
scale:assetRep.scale
orientation:(UIImageOrientation)assetRep.orientation];
if (nil == aPerson.avatarImage) {// 使用默认图片
if (nil == defaultImageName) {
return;
}
[aPerson updateAvaterImageOfPerson: aPerson assetUrlString: aPerson.nameOfdefaultImg defaultImageName:nil];
}
}
failureBlock:^(NSError *error)
{
// 访问库文件被拒绝,则直接使用默认图片
if (nil == aPerson.avatarImage) {// 使用默认图片
if (nil == defaultImageName) {
return;
}
[aPerson updateAvaterImageOfPerson: aPerson assetUrlString: aPerson.nameOfdefaultImg defaultImageName:nil];
}
}
];
}