将摄像头拍摄图像或者本地图片设置为头像的方法
一:效果图
效果描述:点击相框,将手机摄像头拍摄的图片或者本地图片设置为我们定义的头像
功能控件:UIImageView , UIAlertController , UITapGestureRecognizer , UIImagePickerController
首次运行的时候会提醒是否允许程序访问手机相册,点击ok
二:工程图
三:代码区
AppDelegate.h
#import <UIKit/UIKit.h>@interface AppDelegate : UIResponder <UIApplicationDelegate>@property (retain, nonatomic) UIWindow *window;@end
AppDelegate.m
#import "AppDelegate.h" #import "RootViewController.h"@interface AppDelegate ()@end@implementation AppDelegate - (void)dealloc {self.window = nil;[super dealloc]; }- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];// Override point for customization after application launch.RootViewController *rootVC = [RootViewController alloc];UINavigationController *navigationVC = [[UINavigationController alloc] initWithRootViewController:rootVC];self.window.rootViewController = navigationVC;[rootVC release];[navigationVC release];self.window.backgroundColor = [UIColor whiteColor];[self.window makeKeyAndVisible];return YES; }@end
RootViewController.h
#import <UIKit/UIKit.h>@interface RootViewController : UIViewController@end
RootViewController.m
#import "RootViewController.h"@interface RootViewController ()<UINavigationControllerDelegate , UIImagePickerControllerDelegate> // 查看API文档知道,需要遵循这两个代理// 创建属性,为了让每个对象都能访问到 @property (nonatomic , retain)UIImageView *headImage;@end@implementation RootViewController// 重写dealloc - (void)dealloc {self.headImage = nil;[super dealloc]; }- (void)viewDidLoad {[super viewDidLoad];// Do any additional setup after loading the view.// 调用创建界面的对象 [self showHeadImage];// 调用创建手势的对象 [self tapGesture]; }#pragma mark - 创建界面 - (void)showHeadImage {self.headImage = [[UIImageView alloc] initWithFrame:CGRectMake(120, 50, 80, 80)];_headImage.backgroundColor = [UIColor redColor]; // 验证,查看位置// 创建圆角_headImage.layer.cornerRadius = 40;// 切除多余的部分,如果切除,那么传进来的图片显示方式是正方形_headImage.clipsToBounds = YES;// 打开图片用户交互,不然点击图片将会没有反应_headImage.userInteractionEnabled = YES;[self.view addSubview:_headImage];[_headImage release];}#pragma mark - 创建轻拍手势 - (void)tapGesture {UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];// 将手势添加到_headImage视图上面 [self.headImage addGestureRecognizer:tap];[tap release]; }#pragma mark - 关联轻拍手势事件 - (void)handleTap:(UITapGestureRecognizer *)sender {// 创建警示视图控制器UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"提示" message:@"请选择图片来源" preferredStyle:(UIAlertControllerStyleActionSheet)];// 给警示图视图控制器添加控件UIAlertAction *camera = [UIAlertAction actionWithTitle:@"相机" style:(UIAlertActionStyleDefault) handler:^(UIAlertAction *action) {// 调用调用摄像头的方法 [self callLocalCamera];}];UIAlertAction *photo = [UIAlertAction actionWithTitle:@"相册" style:(UIAlertActionStyleDefault) handler:^(UIAlertAction *action) {// 调用调用本地相册的方法 [self callLocalPhotoAlbum];}];UIAlertAction *cancel = [UIAlertAction actionWithTitle:@"取消" style:(UIAlertActionStyleCancel) handler:^(UIAlertAction *action) {}];// 将控件添加到警示视图控制器上面 [alertController addAction:camera];[alertController addAction:photo];[alertController addAction:cancel];// 模态出警示视图控制器 [self presentViewController:alertController animated:YES completion:nil];// 下面使用push的方式展示alertController: 当前页面将会消失进入下一个页面,并且上面没有按钮控件 // [self.navigationController pushViewController:alertController animated:YES]; }#pragma mark - 调用本地相机 - (void)callLocalCamera {// 判断摄像头是否可用// UIImagePickerController相机选择控制器// isCameraDeviceAvailable:(UIImagePickerControllerCameraDeviceRear):如果后置摄像头可用返回YES,为假返回NO;(检测摄像头设备是否可用)BOOL isAvailabel = [UIImagePickerController isCameraDeviceAvailable:(UIImagePickerControllerCameraDeviceRear)];if (!isAvailabel) { // 如果相机设备不可用,则isAvailbel为空,非就为真 NSLog(@"没有找到摄像头");return; // 结束调用摄像头 }// 摄像头可用// 创建图像选择控制器UIImagePickerController *picker = [[UIImagePickerController alloc] init];// 设置图片的来源/*UIImagePickerControllerSourceTypePhotoLibrary, // 显示所有的图片来源UIImagePickerControllerSourceTypeCamera, // 显示摄像头中拍摄的照片UIImagePickerControllerSourceTypeSavedPhotosAlbum // 显示相册中的图片*/picker.sourceType = UIImagePickerControllerSourceTypeCamera;// 允不允许用户对图片进行编辑picker.allowsEditing = YES;// 设置代理,执行代理方法picker.delegate = self;// 模态出视图控制器 [self presentViewController:picker animated:YES completion:nil];[picker release];}#pragma mark - 调用当地相册 - (void)callLocalPhotoAlbum {// 创建图像选择控制器UIImagePickerController *picker = [[UIImagePickerController alloc] init];// 选择图片来源picker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;// 图片是否可编辑picker.allowsEditing = YES;// 设置代理,执行代理方法picker.delegate = self;// 模态出视图控制器 [self presentViewController:picker animated:YES completion:nil];// 释放 [picker release]; }#pragma mark - 执行代理方法,将编辑好的图片存放到_headImage上面 - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {// self.headImage.image = [info objectForKey:UIImagePickerControllerEditedImage];// 模态出当前视图 [self dismissViewControllerAnimated:YES completion:nil]; }#pragma mark - 内存警告 - (void)didReceiveMemoryWarning {[super didReceiveMemoryWarning];// Dispose of any resources that can be recreated. }@end
转载于:https://www.cnblogs.com/li625317534/p/5052057.html
将摄像头拍摄图像或者本地图片设置为头像的方法相关推荐
- 用python读取图像_Python读取图片属性信息的实现方法
本文是利用Python脚本读取图片信息,有几个说明如下: 1.没有实现错误处理 2.没有读取所有信息,大概只有 GPS 信息.图片分辨率.图片像素.设备商.拍摄设备等 3.简单修改后应该能实现暴力修改 ...
- plt.scatter设置点大小_设置电脑桌面壁纸图文教程,下载图片设置计算机系统屏幕背景方法...
大家好,我是老盖,首先感谢观看本文,本篇文章做的有视频,视频讲述的比较详细,也可以看我发布的视频. 我们改变桌面背景,需要有一些图片,我个人是在百度图片中下载图片,打开浏览器进入百度图片网站后,输入壁 ...
- 获取网络图片或本地图片的长宽的方法
获取长宽的方法: 1.网络图片 try {BufferedImage image= ImageIO.read(new URL(imgeUrl).openStream());int width = im ...
- 【微信小程序】不支持使用本地图片设置背景图片解决方法
在小程序样式文件中,如果设置背景图片的路径用的是本地的,就会报错并且显示不出来:如果在wxml文件中使用图片的本地路径作为背景图,则微信开发者工具中可以显示出来,但是运行到手机上显示不出来,解决方法如 ...
- css设置背景颜色/背景图像/背景图像平铺/背景图像位置/背景图像固定显示/综合设置元素背景的方法(学习笔记)
一.设置背景颜色 在CSS当中,网页元素的背景颜色使用background-color属性来设置,和文本颜色的用法类似. 用法 <style>h2{color:red;backround- ...
- vue项目引入本地图片不显示的解决方法
一般情况我们引入图片方式: 这样传过去的图片地址,在页面无法显示: 解决方法:使用 require <template><div class="logo"> ...
- Cocos Creator 2.4+加载本地图片和微信头像
1.加载本地图片资源,使用方法cc.resources.load cc.resources.load(url, cc.SpriteFrame, (err: any, tex: cc.SpriteFra ...
- 微信小程序设置 本地图片为背景图
微信小程序 通过wxss进行设置 背景图报错 经查询,发现微信小程序中,将网络图片或base64图片设置为背景图片可正常显示,将本地图片设置为背景图片则不能显示,解决方法有三种,个人采用的是第三种方法 ...
- android 点动态显示图片,Android用RecyclerView实现动态添加本地图片
本文介绍了Android用RecyclerView实现动态添加本地图片,分享给大家,具体如下: 简单介绍一下用法: 1.跳转到图片选择页面: Intent intent = new Intent(Pa ...
最新文章
- check_mk自定义监控实践之powershell
- PLSQL developer 连接不上64位Oracle 的解决方法
- python序列化持久化需要注意的一个问题
- 图片文件夹要放在html,在网页中插入图像,若图像文件位于html文件的上两级文件夹,则在文件名之前加入()...
- 【python asyncio 运行报错】:raise RuntimeError(‘There is no current event loop in thread %r‘)
- Linux Kettle 闪退问题解决方案
- Abseil之string_view
- Google 推出的编程学习应用 Grasshopper
- Vue中模板渲染原理
- 基于SpringBoot实现邮箱验证码注册
- 基于51单片机的音乐盒彩灯频谱喷泉原理图方案设计
- 提高网速软件测试简历,测试局域网网速的方法
- 使用Apache OpenNLP探索NLP概念
- jzoj3457. 【NOIP2013模拟联考3】沙耶的玩偶
- 【SAP】在制品报表 查询及结算余额查询
- 我国三大运营商即将开始联手屏蔽垃圾短信
- QT访问http服务器,并加载服务器图片
- AX200网卡支持linux,Intel 9260/AX200网卡在Deepin/UOS/Ubuntu下网速慢的处理
- 合工大计算机系汪教授,合肥工业大学计算机与信息学院导师介绍:方宝富
- 滴滴业务中台架构之术:来自技术专家的实践
热门文章
- Python的可变长度参数*和**,传参序列解包,isinstance的使用
- android9获取蓝牙地址,Android获取本机蓝牙地址
- MySQL redis如何实现_如何保障mysql和redis之间的数据一致性?(转发)
- python 封装对象数据_Python数据库封装实现代码示例解析
- 【转载】中国煤层气资源量
- 用VB无窗口透明Usercontrol编写透明浮动按钮
- Linux cat 命令用法
- 计算机中那些事儿(三):我与Dos的不解情缘---初识篇
- 天天打无人车是怎样一种体验?
- 2018网易未来科技峰会召开,科技新浪潮改变商业