传智播客ios7-仿照微信发送图片调用照相机与图片库并实现保存图片到图片库
#import <UIKit/UIKit.h>
// 添加委托
@interface ViewController : UIViewController <UINavigationControllerDelegate, UIImagePickerControllerDelegate>
@property (strong, nonatomic) IBOutlet UIImageView *imageView;
- (IBAction)camera:(id)sender; // 调用照相机
- (IBAction)photolib:(id)sender; // 调用图片库
- (IBAction)savePhoto:(id)sender; // 保存图片到图片库
@end
#import "ViewController.h"
#import <AssetsLibrary/AssetsLibrary.h> // 导入图片库支持库的头文件
#import <MobileCoreServices/MobileCoreServices.h> // 导入手机核心服务支持库的头文件,用于调用照相机
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (void)camera:(id)sender
{
// 1.创建图片选择器
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
// 设置类型为照相机
picker.sourceType = UIImagePickerControllerSourceTypeCamera;
// 设置媒体类型为图片类型
NSString *mediaType = (__bridge NSString *) kUTTypeImage;
picker.mediaTypes = [[NSArray alloc] initWithObjects:mediaType, nil];
picker.allowsEditing = YES; // 允许编辑
picker.delegate = self; // 设置委托
[self presentViewController:picker animated:YES completion:nil]; // 进入照相机相关画面;
}
- (void)photolib:(id)sender
{
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
// 设置为图片库类型
picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
// 设置媒体类型为图片类型
NSString *mediatype = (__bridge NSString *) kUTTypeImage;
picker.mediaTypes = [[NSArray alloc] initWithObjects:mediatype, nil]; // 设置
picker.allowsEditing = YES; // 允许编辑
picker.delegate = self; // 设置委托
[self presentViewController:picker animated:YES completion:nil]; // 进入图片库的相关画面;
}
- (void)savePhoto:(id)sender
{
// 保存图片到图片库
UIImageWriteToSavedPhotosAlbum(self.imageView.image, nil, nil, nil);
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle:@"保存成功"
message:@"可以在图片库查询"
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil, nil];
[alert show];
}
// 用户选择了图片以后,我们在这里进行处理,picker也是图片选择器,即可以是照相机,也可以是图片库,info是媒体信息;
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
// 获取媒体的类型
NSString *mediatype = [info objectForKey:UIImagePickerControllerMediaType];
// 检测媒体是否是图片
if ([mediatype isEqualToString: (__bridge NSString *) kUTTypeImage])
{
// 获取当前选择的图片
UIImage *image = [info objectForKey:UIImagePickerControllerEditedImage];
// 显示图片
self.imageView.image = image;
}
// 进入选择以后的画面
[picker dismissViewControllerAnimated:YES completion:nil];
}
// 用户放弃图片,我们可以在这里处理;
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
{
// 进入放弃以后的画面
[picker dismissViewControllerAnimated:YES completion:nil];
}
@end