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

相关文章

如何选择适合孤独症兄妹的学校?

在探索适合孤独症儿童教育的道路上,每一位家长都面临着前所未有的挑战与抉择。当这份责任落在拥有孤独症兄妹的家庭肩上时,选择一所能够同时满足两个孩子特殊需求的学校,更显得尤为关键。本文将探讨如何为这样的家庭做出明智的选择,并介绍星贝育园自闭症儿童寄宿制学校作为一个值得考虑的选项。 理解孤独症儿童的独特性 孤独症,这一复杂的神经发育障碍,影响着儿童的社交互动、沟通能力以及行为模式。对于拥有孤独症兄

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

安卓链接正常显示,ios#符被转义%23导致链接访问404

原因分析: url中含有特殊字符 中文未编码 都有可能导致URL转换失败,所以需要对url编码处理  如下: guard let allowUrl = webUrl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else {return} 后面发现当url中有#号时,会被误伤转义为%23,导致链接无法访问

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount

透彻!驯服大型语言模型(LLMs)的五种方法,及具体方法选择思路

引言 随着时间的发展,大型语言模型不再停留在演示阶段而是逐步面向生产系统的应用,随着人们期望的不断增加,目标也发生了巨大的变化。在短短的几个月的时间里,人们对大模型的认识已经从对其zero-shot能力感到惊讶,转变为考虑改进模型质量、提高模型可用性。 「大语言模型(LLMs)其实就是利用高容量的模型架构(例如Transformer)对海量的、多种多样的数据分布进行建模得到,它包含了大量的先验

cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个?

跨平台系列 cross-plateform 跨平台应用程序-01-概览 cross-plateform 跨平台应用程序-02-有哪些主流技术栈? cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个? cross-plateform 跨平台应用程序-04-React Native 介绍 cross-plateform 跨平台应用程序-05-Flutte

如何选择SDR无线图传方案

在开源软件定义无线电(SDR)领域,有几个项目提供了无线图传的解决方案。以下是一些开源SDR无线图传方案: 1. **OpenHD**:这是一个远程高清数字图像传输的开源解决方案,它使用SDR技术来实现高清视频的无线传输。OpenHD项目提供了一个完整的工具链,包括发射器和接收器的硬件设计以及相应的软件。 2. **USRP(Universal Software Radio Periphera

《数据结构(C语言版)第二版》第八章-排序(8.3-交换排序、8.4-选择排序)

8.3 交换排序 8.3.1 冒泡排序 【算法特点】 (1) 稳定排序。 (2) 可用于链式存储结构。 (3) 移动记录次数较多,算法平均时间性能比直接插入排序差。当初始记录无序,n较大时, 此算法不宜采用。 #include <stdio.h>#include <stdlib.h>#define MAXSIZE 26typedef int KeyType;typedef char In

Android 10.0 mtk平板camera2横屏预览旋转90度横屏拍照图片旋转90度功能实现

1.前言 在10.0的系统rom定制化开发中,在进行一些平板等默认横屏的设备开发的过程中,需要在进入camera2的 时候,默认预览图像也是需要横屏显示的,在上一篇已经实现了横屏预览功能,然后发现横屏预览后,拍照保存的图片 依然是竖屏的,所以说同样需要将图片也保存为横屏图标了,所以就需要看下mtk的camera2的相关横屏保存图片功能, 如何实现实现横屏保存图片功能 如图所示: 2.mtk

Spring MVC 图片上传

引入需要的包 <dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.1</version></dependency><dependency><groupId>commons-io</groupId><artifactId>commons-