• iOS中 读取相册,调用系统相机 技术分享


    技术内容:分别读取相册以及调取相机,将图片显示到imageView上

    布局:

    1.创建imageView 和 button 并为button一个关联pickerImage的事件

    [objc] view plaincopy
     
    1. <div style="text-align: left;"><span style="font-family: Helvetica; -webkit-text-stroke- initial;">    self.aImageView = [[UIImageView alloc]initWithFrame:CGRectMake(60, 100, 200, 200)];</span></div>    self.aImageView.backgroundColor = [UIColor redColor];  
    2.     self.aImageView.userInteractionEnabled = YES;  
    3.       
    4.     self.aButton = [[UIButton alloc]initWithFrame:CGRectMake(98, 350, 125, 25)];  
    5.     self.aButton.backgroundColor = [UIColor blueColor];  
    6.     [self.aButton addTarget:self action:@selector(pickerImage:) forControlEvents:(UIControlEventTouchUpInside)];  
    7.     [self.aButton setTitle:@"选择图像" forState:(UIControlStateNormal)];  
    8.       
    9.     [self.view addSubview:self.aButton];  
    10.     [self.view addSubview:self.aImageView];  
    11.     [self.aButton release];  
    12.     [self.aImageView release];  
    13.       
    14.       
    15.     [self addTapGestureOnImageView];  

    2.因为有的场景需要直接点击图片更换别的图片,所以在imageView上添加轻拍动作

    [objc] view plaincopy
     
    1. - (void)addTapGestureOnImageView{  
    2.     UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(pickerImage:)];  
    3.     [self.aImageView addGestureRecognizer:tap];  
    4.     [tap release];  
    5. }  

    3.实现轻拍动作中方法

    [objc] view plaincopy
     
    1. - (void)pickerImage:(UIButton *)button{  
    2.     //添加ActionSheet控件,提示选项框,调出相机或拍摄图片  
    3.     //第一个参数:是行为列表的标题 一般为空  
    4.     //第二个参数:遵循代理  
    5.     //第三个参数:取消这个操作按钮上 显示的文字  
    6.     //第四个参数:destructive 破坏性的, 毁灭性的 自己理解吧 反正我写的是拍照,执行操作的意思  
    7.     //第五个参数:从相册选取图片  
    8.     UIActionSheet *actionSheet = [[UIActionSheet alloc]initWithTitle:nil delegate:self cancelButtonTitle:@"取消" destructiveButtonTitle:@"拍照" otherButtonTitles:@"从相册选择图片", nil nil];  
    9.     //在当前界面显示actionSheet对象  
    10.     [actionSheet showInView:self.view];  
    11.     [actionSheet release];  
    12. }  

    4.实现action代理协议中的方法

    [objc] view plaincopy
     
    1. - (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex{  
    2.     switch (buttonIndex) {  
    3.         case 0:  
    4.             //调用系统相机,拍照  
    5.             [self pickerPictureFromCamera];  
    6.             break;  
    7.         case 1:  
    8.             [self pickerPictureFromPhotosAlbum];  
    9.         default:  
    10.             break;  
    11.     }  
    12. }  

    4.1从摄像头获取图片

    [objc] view plaincopy
     
    1. - (void)pickerPictureFromCamera{  
    2.       
    3.     //判断前摄像头是否可用,如果不可用的话,用后摄像头。如果后摄像头也不可用的话用手机图片库  
    4.     //判断前置摄像头是否可用  
    5.     if ([UIImagePickerController isCameraDeviceAvailable:UIImagePickerControllerCameraDeviceFront]) {  
    6.         NSLog(@"用前置摄像头");  
    7.           
    8.         self.imagePC = [[UIImagePickerController alloc]init];  
    9.         self.imagePC.cameraDevice = UIImagePickerControllerCameraDeviceFront;  
    10.         [self.imagePC release];  
    11.         //判断后置摄像头是否可用  
    12.     }else if ([UIImagePickerController isCameraDeviceAvailable:UIImagePickerControllerCameraDeviceRear]){  
    13.         NSLog(@"用后置摄像头");  
    14.           
    15.         self.imagePC = [[UIImagePickerController alloc]init];  
    16.         self.imagePC.cameraDevice = UIImagePickerControllerCameraDeviceRear;  
    17.         [self.imagePC release];  
    18.         //两者都不行的话,从手机相册调取照片  
    19.     }else{  
    20.         UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"调用摄像头失败" message:@"请从手机相册中选取照片" delegate:self cancelButtonTitle:@"确定" otherButtonTitles:nil, nil nil];  
    21.         [alertView show];  
    22.         [alertView release];  
    23.     }  
    24.       
    25.     //初始化图片控制器对象  
    26.     UIImagePickerController *imagePicker = [[UIImagePickerController alloc]init];  
    27.     //sourceType资源样式  
    28.     //设置图片选择器选择图片的样式  
    29.     imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;  
    30.     //设置图片是否允许编辑  
    31.     imagePicker.allowsEditing = YES;  
    32.     //设置图片选择器代理对象为这个视图控制器  
    33.     imagePicker.delegate = self;  
    34.     //把相机推出来 模态  
    35.     [self presentViewController:imagePicker animated:YES completion:nil];  
    36.     //释放  
    37.     [imagePicker release];  
    38.       
    39. }  

    4.2从手机的图片库获取图片

    [objc] view plaincopy
     
    1. - (void)pickerPictureFromPhotosAlbum{  
    2.     //初始化图片控制器对象  
    3.     UIImagePickerController *imagePicker = [[UIImagePickerController alloc]init];  
    4.     //sourceType资源样式  
    5.     //设置图片选择器选择图片的样式  
    6.     imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;  
    7.     //设置图片是否允许编辑  
    8.     imagePicker.allowsEditing = YES;  
    9.     //设置图片选择器代理对象为这个视图控制器  
    10.     imagePicker.delegate = self;  
    11.     //把选择控制器推出来 模态  
    12.     [self presentViewController:imagePicker animated:YES completion:nil];  
    13.     //释放  
    14.     [imagePicker release];  
    15. }  

    5.将选取好的照片保存到详情页的方法

    [objc] view plaincopy
     
      1. - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{  
      2.     //以相册作为字典,从中取出照片  
      3.     self.aImageView.image = [info objectForKey:UIImagePickerControllerEditedImage];  
      4.     //把选取框模态回去  
      5.     [self dismissViewControllerAnimated:YES completion:nil];  
      6. }  
  • 相关阅读:
    Linux日志管理系统rsyslog
    Linux访问权限控制及时间同步实践
    Linux系统自动化安装之cobbler实现
    【转】java取整和java四舍五入方法
    The web application [ ] registered the JDBC driver [net.sourceforge.jtds.jdbc.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver
    Python学习笔记之函数式编程
    Java去重字符串的两种方法以及java中冒号的使用
    Python学习之字符串格式化
    Python学习之文件操作
    Python学习笔记之爬虫
  • 原文地址:https://www.cnblogs.com/Yishu/p/4878716.html
Copyright © 2020-2023  润新知