使用UIImagePickerController和用户交互,我们需要实现2个协议<UIImagePickerControllerDelegate,UINavigationControllerDelegate>。
View Code
代码如下 | 复制代码 |
#pragma mark 从用户相册获取活动图片 - (void)pickImageFromAlbum { imagePicker = [[UIImagePickerController alloc] init]; imagePicker.delegate = self; imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; imagePicker.modalTransitionStyle = UIModalTransitionStyleCoverVertical; imagePicker.allowsEditing = YES; [self presentModalViewController:imagePicker animated:YES]; } |
我们来看看上面的从相册获取图片,我们首先要实例化UIImagePickerController对象,然后设置imagePicker对象为当前对象,设置imagePicker的图片来源为UIImagePickerControllerSourceTypePhotoLibrary,表明当前图片的来源为相册,除此之外还可以设置用户对图片是否可编辑。
View Code
代码如下 | 复制代码 |
#pragma mark 从摄像头获取活动图片 - (void)pickImageFromCamera { imagePicker = [[UIImagePickerController alloc] init]; imagePicker.delegate = self; imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera; imagePicker.modalTransitionStyle = UIModalTransitionStyleCoverVertical; imagePicker.allowsEditing = YES; [self presentModalViewController:imagePicker animated:YES]; } |
以上是从摄像头获取图片,和从相册获取图片只是图片来源的设置不一样,摄像头图片的来源为UIImagePickerControllerSourceTypeCamera。
在和用户交互之后,用户选择好图片后,会回调选择结束的方法。
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
[picker dismissViewControllerAnimated:YES completion:nil];
if (picker.sourceType == UIImagePickerControllerSourceTypeCamera)
{
UIImage *image = info[UIImagePickerControllerOriginalImage];
//获取并压缩图片
NSData *imageData = UIImageJPEGRepresentation(image, 1);
[self.imageArray addObject:[imageData base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength]];//ios 7 出来的原生base64 方法
[self.imageArray1 addObject:[UIImage imageWithData:imageData]];
ViewController *listVc = [[ViewController alloc]initWithNibName:@"aaa"
bundle:nil];
[self.navigationController pushViewController:listVc
animated:YES];
}
}else{
NSURL *imageURL = info[UIImagePickerControllerReferenceURL];
ALAssetsLibraryAssetForURLResultBlock resultrBlock = ^(ALAsset *asset){
ALAssetRepresentation *representation = [asset defaultRepresentation];
NSString *fileName = [representation filename];//获取图片的名字
UIImage *image = [UIImage imageWithCGImage:[representation fullResolutionImage]];//获取所有图片
// 获取并压缩图片
NSData *imgData = UIImageJPEGRepresentation(image, 1);
[self.imageArray addObject:[imgData base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength]];
[self.imageCells addObject:[UIImage imageWithData:imgData]];
// [weakSelf layoutImageItems];
};
ALAssetsLibrary* assetslibrary = [[ALAssetsLibrary alloc] init];
[assetslibrary assetForURL:imageURL
resultBlock:resultrBlock
failureBlock:nil];
}