- /**
- * 更新联系人的头像属性.
- *
- * @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];
- }
- }
- ];
- }
来源: http://www.phpxs.com/code/1006675/