iOS打开照相机与本地相册选择图片

2024-01-20 19:48

本文主要是介绍iOS打开照相机与本地相册选择图片,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最近正好项目里面要集成“打开照相机与本地相册选择图片”的功能,今天就在这边给大家写一个演示程序;打开相机拍摄后或者在相册中选择一张照片,然后将它显示在界面上。好了废话不多说,因为比较简单直接上源码。

首先,我们在头文件中添加需要用到的actionSheet控件,显示图片的UIImageView控件,并且加上所需要的协议

[objc]  view plain copy
在CODE上查看代码片 派生到我的代码片
  1. #import <UIKit/UIKit.h>  
  2.   
  3. @interface ImagePickerViewController : UIViewController<UIImagePickerControllerDelegate,UIActionSheetDelegate,UINavigationControllerDelegate>  
  4.   
  5. @property (strongnonatomic) IBOutlet UIImageView *headImage;  
  6.   
  7. @property (strongnonatomicUIActionSheet *actionSheet;  
  8.   
  9. - (IBAction)clickPickImage:(id)sender;  
  10. @end  

通过点击我设置在界面中的按钮来呼出actionSheet控件,来选择相应的操作拍照或是在相册中选择相片,代码如下:

[objc]  view plain copy
在CODE上查看代码片 派生到我的代码片
  1. //  
  2. //  ImagePickerViewController.m  
  3. //  testAuto  
  4. //  
  5. //  Created by silicon on 15/5/9.  
  6. //  Copyright (c) 2015年 silicon. All rights reserved.  
  7. //  
  8.   
  9. #import "ImagePickerViewController.h"  
  10.   
  11. @interface ImagePickerViewController ()  
  12.   
  13. @end  
  14.   
  15. @implementation ImagePickerViewController  
  16.   
  17. @synthesize actionSheet = _actionSheet;  
  18.   
  19. - (void)viewDidLoad {  
  20.     [super viewDidLoad];  
  21.     // Do any additional setup after loading the view from its nib.  
  22.       
  23. }  
  24.   
  25. - (void)didReceiveMemoryWarning {  
  26.     [super didReceiveMemoryWarning];  
  27.     // Dispose of any resources that can be recreated.  
  28. }  
  29.   
  30.   
  31. /** 
  32.  @ 调用ActionSheet 
  33.  */  
  34. - (void)callActionSheetFunc{  
  35.     if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]){  
  36.         self.actionSheet = [[UIActionSheet alloc] initWithTitle:@"选择图像" delegate:self cancelButtonTitle:@"取消" destructiveButtonTitle:nil otherButtonTitles:@"拍照"@"从相册选择", nil nil];  
  37.     }else{  
  38.         self.actionSheet = [[UIActionSheet alloc] initWithTitle:@"选择图像" delegate:self cancelButtonTitle:@"取消"destructiveButtonTitle:nil otherButtonTitles:@"从相册选择", nil nil];  
  39.     }  
  40.       
  41.     self.actionSheet.tag = 1000;  
  42.     [self.actionSheet showInView:self.view];  
  43. }  
  44.   
  45. // Called when a button is clicked. The view will be automatically dismissed after this call returns  
  46. - (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex{  
  47.     if (actionSheet.tag == 1000) {  
  48.         NSUInteger sourceType = UIImagePickerControllerSourceTypePhotoLibrary;  
  49.         // 判断是否支持相机  
  50.         if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {  
  51.             switch (buttonIndex) {  
  52.                 case 0:  
  53.                     //来源:相机  
  54.                     sourceType = UIImagePickerControllerSourceTypeCamera;  
  55.                     break;  
  56.                 case 1:  
  57.                     //来源:相册  
  58.                     sourceType = UIImagePickerControllerSourceTypePhotoLibrary;  
  59.                     break;  
  60.                 case 2:  
  61.                     return;  
  62.             }  
  63.         }  
  64.         else {  
  65.             if (buttonIndex == 2) {  
  66.                 return;  
  67.             } else {  
  68.                 sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;  
  69.             }  
  70.         }  
  71.         // 跳转到相机或相册页面  
  72.         UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init];  
  73.         imagePickerController.delegate = self;  
  74.         imagePickerController.allowsEditing = YES;  
  75.         imagePickerController.sourceType = sourceType;  
  76.           
  77.         [self presentViewController:imagePickerController animated:YES completion:^{  
  78.           
  79.         }];  
  80.     }  
  81. }  
  82.   
  83. - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info  
  84. {  
  85.     [picker dismissViewControllerAnimated:YES completion:^{  
  86.       
  87.     }];  
  88.       
  89.     UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];  
  90.     self.headImage.image = image;  
  91. }  
  92.   
  93. /* 
  94. #pragma mark - Navigation 
  95.  
  96. // In a storyboard-based application, you will often want to do a little preparation before navigation 
  97. - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
  98.     // Get the new view controller using [segue destinationViewController]. 
  99.     // Pass the selected object to the new view controller. 
  100. } 
  101. */  
  102.   
  103. - (IBAction)clickPickImage:(id)sender {  
  104.       
  105.     [self callActionSheetFunc];  
  106. }  
  107. @end  

代码比较简单,也容易理解,运行的效果如下:













这篇关于iOS打开照相机与本地相册选择图片的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/627134

相关文章

Java实现将HTML文件与字符串转换为图片

《Java实现将HTML文件与字符串转换为图片》在Java开发中,我们经常会遇到将HTML内容转换为图片的需求,本文小编就来和大家详细讲讲如何使用FreeSpire.DocforJava库来实现这一功... 目录前言核心实现:html 转图片完整代码场景 1:转换本地 HTML 文件为图片场景 2:转换 H

Java实现在Word文档中添加文本水印和图片水印的操作指南

《Java实现在Word文档中添加文本水印和图片水印的操作指南》在当今数字时代,文档的自动化处理与安全防护变得尤为重要,无论是为了保护版权、推广品牌,还是为了在文档中加入特定的标识,为Word文档添加... 目录引言Spire.Doc for Java:高效Word文档处理的利器代码实战:使用Java为Wo

基于C#实现PDF转图片的详细教程

《基于C#实现PDF转图片的详细教程》在数字化办公场景中,PDF文件的可视化处理需求日益增长,本文将围绕Spire.PDFfor.NET这一工具,详解如何通过C#将PDF转换为JPG、PNG等主流图片... 目录引言一、组件部署二、快速入门:PDF 转图片的核心 C# 代码三、分辨率设置 - 清晰度的决定因

Python从Word文档中提取图片并生成PPT的操作代码

《Python从Word文档中提取图片并生成PPT的操作代码》在日常办公场景中,我们经常需要从Word文档中提取图片,并将这些图片整理到PowerPoint幻灯片中,手动完成这一任务既耗时又容易出错,... 目录引言背景与需求解决方案概述代码解析代码核心逻辑说明总结引言在日常办公场景中,我们经常需要从 W

使用Spring Cache本地缓存示例代码

《使用SpringCache本地缓存示例代码》缓存是提高应用程序性能的重要手段,通过将频繁访问的数据存储在内存中,可以减少数据库访问次数,从而加速数据读取,:本文主要介绍使用SpringCac... 目录一、Spring Cache简介核心特点:二、基础配置1. 添加依赖2. 启用缓存3. 缓存配置方案方案

使用Java读取本地文件并转换为MultipartFile对象的方法

《使用Java读取本地文件并转换为MultipartFile对象的方法》在许多JavaWeb应用中,我们经常会遇到将本地文件上传至服务器或其他系统的需求,在这种场景下,MultipartFile对象非... 目录1. 基本需求2. 自定义 MultipartFile 类3. 实现代码4. 代码解析5. 自定

使用Python实现无损放大图片功能

《使用Python实现无损放大图片功能》本文介绍了如何使用Python的Pillow库进行无损图片放大,区分了JPEG和PNG格式在放大过程中的特点,并给出了示例代码,JPEG格式可能受压缩影响,需先... 目录一、什么是无损放大?二、实现方法步骤1:读取图片步骤2:无损放大图片步骤3:保存图片三、示php

Java实现本地缓存的四种方法实现与对比

《Java实现本地缓存的四种方法实现与对比》本地缓存的优点就是速度非常快,没有网络消耗,本地缓存比如caffine,guavacache这些都是比较常用的,下面我们来看看这四种缓存的具体实现吧... 目录1、HashMap2、Guava Cache3、Caffeine4、Encache本地缓存比如 caff

Java使用Thumbnailator库实现图片处理与压缩功能

《Java使用Thumbnailator库实现图片处理与压缩功能》Thumbnailator是高性能Java图像处理库,支持缩放、旋转、水印添加、裁剪及格式转换,提供易用API和性能优化,适合Web应... 目录1. 图片处理库Thumbnailator介绍2. 基本和指定大小图片缩放功能2.1 图片缩放的

Android kotlin中 Channel 和 Flow 的区别和选择使用场景分析

《Androidkotlin中Channel和Flow的区别和选择使用场景分析》Kotlin协程中,Flow是冷数据流,按需触发,适合响应式数据处理;Channel是热数据流,持续发送,支持... 目录一、基本概念界定FlowChannel二、核心特性对比数据生产触发条件生产与消费的关系背压处理机制生命周期