ios中UIImagePickerController 图片选取器的使用
2012-07-03 09:30
603 查看
1。 定义 类变量:
UIImagePickerController* picker_library_;
2。实现 UIImagePickerControllerDelegate 这个delegate,还需要UINavigationControllerDelegate 这个代理
3。 以模态的方式,显示 图片选取器
其中,sourceType 指定了 几种 图片的来源:
UIImagePickerControllerSourceTypePhotoLibrary:表示显示所有的照片
UIImagePickerControllerSourceTypeCamera:表示从摄像头选取照片
UIImagePickerControllerSourceTypeSavedPhotosAlbum:表示仅仅从相册中选取照片。
allowEditing和allowsImageEditing 设置为YES,表示 允许用户编辑图片,否则,不允许用户编辑。
4。 当用户选择一个图片以后,有可能调用两种不同的函数,根据版本的不同。所以,如果要同时支持高版本和低版本的兼容性,那么就
要处理两种函数。
//3.x 用户选中图片后的回调
- (void)imagePickerController: (UIImagePickerController *)picker didFinishPickingMediaWithInfo: (NSDictionary *)info
//2.x 用户选中图片之后的回调
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo
两种函数的处理代码如下:
5。 用户取消选择
6。演示示例
UIImagePickerController* picker_library_;
2。实现 UIImagePickerControllerDelegate 这个delegate,还需要UINavigationControllerDelegate 这个代理
3。 以模态的方式,显示 图片选取器
picker_library_ = [[UIImagePickerController alloc] init]; picker_library_.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; picker_library_.allowsEditing = YES; picker_camera_.allowsImageEditing=YES; picker_library_.delegate = self; [self presentModalViewController: picker_library_ animated: YES];
其中,sourceType 指定了 几种 图片的来源:
UIImagePickerControllerSourceTypePhotoLibrary:表示显示所有的照片
UIImagePickerControllerSourceTypeCamera:表示从摄像头选取照片
UIImagePickerControllerSourceTypeSavedPhotosAlbum:表示仅仅从相册中选取照片。
allowEditing和allowsImageEditing 设置为YES,表示 允许用户编辑图片,否则,不允许用户编辑。
4。 当用户选择一个图片以后,有可能调用两种不同的函数,根据版本的不同。所以,如果要同时支持高版本和低版本的兼容性,那么就
要处理两种函数。
//3.x 用户选中图片后的回调
- (void)imagePickerController: (UIImagePickerController *)picker didFinishPickingMediaWithInfo: (NSDictionary *)info
//2.x 用户选中图片之后的回调
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo
两种函数的处理代码如下:
//3.x 用户选中图片后的回调 - (void)imagePickerController: (UIImagePickerController *)picker didFinishPickingMediaWithInfo: (NSDictionary *)info { if (picker == picker_camera_) { //如果是 来自照相机的image,那么先保存 UIImage* original_image = [info objectForKey:@"UIImagePickerControllerOriginalImage"]; UIImageWriteToSavedPhotosAlbum(original_image, self, @selector(image:didFinishSavingWithError:contextInfo:), nil); } //获得编辑过的图片 UIImage* image = [info objectForKey: @"UIImagePickerControllerEditedImage"]; [self dismissModalViewControllerAnimated:YES]; [picker release]; }
//2.x 用户选中图片之后的回调 - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo { NSMutableDictionary * dict= [NSMutableDictionary dictionaryWithDictionary:editingInfo]; [dict setObject:image forKey:@"UIImagePickerControllerEditedImage"]; //直接调用3.x的处理函数 [self imagePickerController:picker didFinishPickingMediaWithInfo:dict]; }
5。 用户取消选择
// 用户选择取消 - (void) imagePickerControllerDidCancel: (UIImagePickerController *)picker { [self dismissModalViewControllerAnimated:YES]; [picker release]; }
6。演示示例
- (void) pickImage: (id) sender { UIImagePickerController *ipc = [[UIImagePickerController alloc] init]; if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]){ ipc.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; ipc.mediaTypes =[UIImagePickerController availableMediaTypesForSourceType:ipc.sourceType]; } ipc.delegate = self; ipc.allowsImageEditing = NO; [self presentModalViewController:ipc animated:YES]; } - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { NSString *mediaType = [info objectForKey:UIImagePickerControllerMediaType]; if ([mediaType isEqualToString:@"public.image"]){ // UIImage *selectedImage = [info objectForKey:UIImagePickerControllerOriginalImage]; UIImage *image = [info objectForKey:@"UIImagePickerControllerOriginalImage"]; NSLog(@"found an image"); [UIImageJPEGRepresentation(image, 1.0f) writeToFile:[self findUniqueSavePath] atomically:YES]; SETIMAGE(image); CFShow([[NSFileManager defaultManager] directoryContentsAtPath:[NSHomeDirectory() stringByAppendingString:@"/Documents"]]); } else if ([mediaType isEqualToString:@"public.movie"]){ NSURL *videoURL = [info objectForKey:UIImagePickerControllerMediaURL]; NSLog(@"found a video"); NSData *webData = [NSData dataWithContentsOfURL:videoURL]; //NSData *video = [[NSString alloc] initWithContentsOfURL:videoURL]; [webData writeToFile:[self findUniqueMoviePath] atomically:YES]; CFShow([[NSFileManager defaultManager] directoryContentsAtPath:[NSHomeDirectory() stringByAppendingString:@"/Documents"]]); // NSLog(videoURL); } [picker dismissModalViewControllerAnimated:YES]; }
相关文章推荐
- iOS中UIImagePickerController图片选取器的用法小结
- 基于Swift的iOS应用程序开发:使用UIImagePickerController从相册选择图片
- iphone 怎么使用图片选取器 UIImagePickerController
- iOS - 使用QBImagePickerController选取图片
- ios 使用UIImagePickerController 打开图片库和相机选择图片修改头像
- iphone 怎么使用图片选取器 UIImagePickerController
- Qt for iOS:使用UIImagePickerController获取一个系统相册中的图片
- ios 使用UIImagePickerController 打开图片库和相机选择图片修改头像(iphone版本)
- iphone 怎么使用图片选取器 UIImagePickerController
- iphone 怎么使用图片选取器 UIImagePickerController
- ios 使用UIImagePickerController 打开图片库和相机选择图片修改头像(iphone版本)
- UIImagePickerController 图像选取器--在iPhone中调用照相机、照片库—IOS开发
- UIImagePickerController实现拍照录像或者选取选择图片和影像(Swift)
- IOS开发之小实例--使用UIImagePickerController创建一个简单的相机应用程序
- IOS UIImagePickerController从拍照、图库、相册获取图片
- ios--摄像头使用--UIImagePickerController
- iOS使用UIImagePickerController在相册中选择破损图crash
- UIImagePickerController 图像选取器--在iPhone中调用照相机、照片库—IOS开发
- iOS开发-使用UIImagePickerController遇到的问题
- iOS App内存优化之 解决UIImagePickerController的图片对象占用RAM过高问题