<span class="comment">//弹出actionsheet。选择获取头像的方式</span>
<span class="comment">//从相册获取图片</span>
-(<span class="keyword">void</span>)takePictureClick:(UIButton *)sender
{
<span class="comment">//   /*注:使用,需要实现以下<a target=_blank target="_blank" title="与协议相关的所有文章" class="c_tag" href="http://www.lvtao.net/tag/%E5%8D%8F%E8%AE%AE" style="color: rgb(51, 102, 153); text-decoration: none;">协议</a>:UIImagePickerControllerDelegate,</span>
<span class="comment">//    UINavigationControllerDelegate</span>
<span class="comment">//    */</span>
<span class="comment">//   UIImagePickerController *picker = [[UIImagePickerController alloc]init];</span>
<span class="comment">//   //设置图片源(相簿)</span>
<span class="comment">//   picker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;</span>
<span class="comment">//   //设置代理</span>
<span class="comment">//   picker.delegate = self;</span>
<span class="comment">//   //设置可以编辑</span>
<span class="comment">//   picker.allowsEditing = YES;</span>
<span class="comment">//   //打开拾取器界面</span>
<span class="comment">//   [self presentViewController:picker animated:YES completion:nil];</span>
<span class="indent">  </span>UIActionSheet* actionSheet = [[UIActionSheet alloc]
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span><span class="indent">  </span><span class="indent">  </span><span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>  initWithTitle:<span class="string">@"请选择文件来源"</span>
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span><span class="indent">  </span><span class="indent">  </span><span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>  <span class="keyword">delegate</span>:self
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span><span class="indent">  </span><span class="indent">  </span><span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>  cancelButtonTitle:<span class="string">@"取消"</span>
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span><span class="indent">  </span><span class="indent">  </span><span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>  destructiveButtonTitle:nil
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span><span class="indent">  </span><span class="indent">  </span><span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>  otherButtonTitles:<span class="string">@"照相机"</span>,<span class="string">@"摄像机"</span>,<span class="string">@"本地相簿"</span>,<span class="string">@"本地视频"</span>,nil];
<span class="indent">  </span>[actionSheet showInView:self.view];
<span class="indent">  </span>
}
<span class="preprocessor">#<span class="keyword">pragma</span> mark -</span>
<span class="preprocessor">#<span class="keyword">pragma</span> UIActionSheet Delegate</span>
- (<span class="keyword">void</span>)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
<span class="indent">  </span>NSLog(<span class="string">@"buttonIndex = [%d]"</span>,buttonIndex);
<span class="indent">  </span><span class="keyword">switch</span> (buttonIndex) {
<span class="indent">  </span><span class="indent">  </span><span class="keyword">case</span> <span class="number">0</span>:<span class="comment">//照相机</span>
<span class="indent">  </span><span class="indent">  </span>{
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>imagePicker.<span class="keyword">delegate</span> = self;
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>imagePicker.allowsEditing = YES;
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
<span class="comment">//           [self presentModalViewController:imagePicker animated:YES];</span>
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>[self presentViewController:imagePicker animated:YES completion:nil];
<span class="indent">  </span><span class="indent">  </span>}
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span><span class="keyword">break</span>;
<span class="indent">  </span><span class="indent">  </span><span class="keyword">case</span> <span class="number">1</span>:<span class="comment">//摄像机</span>
<span class="indent">  </span><span class="indent">  </span>{
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>imagePicker.<span class="keyword">delegate</span> = self;
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>imagePicker.allowsEditing = YES;
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>imagePicker.videoQuality = UIImagePickerControllerQualityTypeLow;
<span class="comment">//           [self presentModalViewController:imagePicker animated:YES];</span>
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>[self presentViewController:imagePicker animated:YES completion:nil];
<span class="indent">  </span><span class="indent">  </span>}
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span><span class="keyword">break</span>;
<span class="indent">  </span><span class="indent">  </span><span class="keyword">case</span> <span class="number">2</span>:<span class="comment">//本地相簿</span>
<span class="indent">  </span><span class="indent">  </span>{
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>imagePicker.<span class="keyword">delegate</span> = self;
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>imagePicker.allowsEditing = YES;
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
<span class="comment">//           [self presentModalViewController:imagePicker animated:YES];</span>
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>[self presentViewController:imagePicker animated:YES completion:nil];
<span class="indent">  </span><span class="indent">  </span>}
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span><span class="keyword">break</span>;
<span class="indent">  </span><span class="indent">  </span><span class="keyword">case</span> <span class="number">3</span>:<span class="comment">//本地视频</span>
<span class="indent">  </span><span class="indent">  </span>{
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>imagePicker.<span class="keyword">delegate</span> = self;
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>imagePicker.allowsEditing = YES;
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
<span class="comment">//           [self presentModalViewController:imagePicker animated:YES];</span>
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>[self presentViewController:imagePicker animated:YES completion:nil];
<span class="indent">  </span><span class="indent">  </span>}
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span><span class="keyword">break</span>;
<span class="indent">  </span><span class="indent">  </span><span class="keyword">default</span>:
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span><span class="keyword">break</span>;
<span class="indent">  </span>}
}<span class="preprocessor">#<span class="keyword">pragma</span> mark -</span>
<span class="preprocessor">#<span class="keyword">pragma</span> UIImagePickerController Delegate</span>
- (<span class="keyword">void</span>)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
<span class="indent">  </span><span class="keyword">if</span> ([[info objectForKey:UIImagePickerControllerMediaType] isEqualToString:(__bridge NSString *)kUTTypeImage]) {
<span class="indent">  </span><span class="indent">  </span>UIImage *img = [info objectForKey:UIImagePickerControllerEditedImage];
<span class="indent">  </span><span class="indent">  </span>[self performSelector:@selector(saveImage:)  withObject:img afterDelay:<span class="number">0.5</span>];
<span class="indent">  </span>}
<span class="indent">  </span><span class="keyword">else</span> <span class="keyword">if</span> ([[info objectForKey:UIImagePickerControllerMediaType] isEqualToString:(__bridge NSString *)kUTTypeMovie]) {
<span class="indent">  </span><span class="indent">  </span>NSString *videoPath = [[info objectForKey:UIImagePickerControllerMediaURL] path];
<span class="indent">  </span><span class="indent">  </span>self.fileData = [NSData dataWithContentsOfFile:videoPath];
<span class="indent">  </span>}
<span class="comment">//   [picker dismissModalViewControllerAnimated:YES];</span>
<span class="indent">  </span>[picker dismissViewControllerAnimated:YES completion:nil];
}- (<span class="keyword">void</span>)imagePickerControllerDidCancel:(UIImagePickerController *)picker
{
<span class="comment">//   [picker dismissModalViewControllerAnimated:YES];</span>
<span class="indent">  </span><span class="indent">  </span>[picker dismissViewControllerAnimated:YES completion:nil];
}- (<span class="keyword">void</span>)saveImage:(UIImage *)image {
<span class="indent">  </span><span class="comment">//  NSLog(@"保存头像!");</span>
<span class="indent">  </span><span class="comment">//  [userPhotoButton setImage:image forState:UIControlStateNormal];</span>
<span class="indent">  </span>BOOL success;
<span class="indent">  </span>NSFileManager *fileManager = [NSFileManager defaultManager];
<span class="indent">  </span>NSError *error;
<span class="indent">  </span>
<span class="indent">  </span>NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
<span class="indent">  </span>NSString *documentsDirectory = [paths objectAtIndex:<span class="number">0</span>];
<span class="indent">  </span>NSString *imageFilePath = [documentsDirectory stringBy<a target=_blank target="_blank" title="与app相关的所有文章" class="c_tag" href="http://www.lvtao.net/tag/app" style="color: rgb(51, 102, 153); text-decoration: none;">app</a>endingPathComponent:<span class="string">@"selfPhoto.jpg"</span>];
<span class="indent">  </span>NSLog(<span class="string">@"imageFile->>%@"</span>,imageFilePath);
<span class="indent">  </span>success = [fileManager fileExistsAtPath:imageFilePath];
<span class="indent">  </span><span class="keyword">if</span>(success) {
<span class="indent">  </span><span class="indent">  </span>success = [fileManager removeItemAtPath:imageFilePath error:&error];
<span class="indent">  </span>}
<span class="comment">//   UIImage *smallImage=[self scaleFromImage:image toSize:CGSizeMake(80.0f, 80.0f)];//将图片尺寸改为80*80</span>
<span class="indent">  </span>UIImage *smallImage = [self thumbnailWithImageWithoutScale:image size:CGSizeMake(<span class="number">93</span>, <span class="number">93</span>)];
<span class="indent">  </span>[UIImageJPE<a target=_blank target="_blank" title="与grep相关的所有文章" class="c_tag" href="http://www.lvtao.net/tag/grep" style="color: rgb(51, 102, 153); text-decoration: none;">grep</a>resentation(smallImage, <span class="number">1.0</span>f) writeToFile:imageFilePath atomically:YES];<span class="comment">//写入文件</span>
<span class="indent">  </span>UIImage *selfPhoto = [UIImage imageWithContentsOfFile:imageFilePath];<span class="comment">//读取图片文件</span>
<span class="comment">//   [userPhotoButton setImage:selfPhoto forState:UIControlStateNormal];</span>
<span class="indent">  </span>self.img.image = selfPhoto;
}<span class="comment">// 改变图像的尺寸,方便上传服务器</span>
- (UIImage *) scaleFromImage: (UIImage *) image toSize: (CGSize) size
{
<span class="indent">  </span>UIGraphicsBeginImageContext(size);
<span class="indent">  </span>[image drawInRect:CGRectMake(<span class="number">0</span>, <span class="number">0</span>, size.width, size.height)];
<span class="indent">  </span>UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
<span class="indent">  </span>UIGraphicsEndImageContext();
<span class="indent">  </span><span class="keyword">return</span> newImage;
}

2.保持原始图片的长宽比,生成需要尺寸的图片

<span class="comment">//2.保持原来的长宽比,生成一个缩略图</span>
- (UIImage *)thumbnailWithImageWithoutScale:(UIImage *)image size:(CGSize)asize
{
<span class="indent">  </span>UIImage *newimage;
<span class="indent">  </span><span class="keyword">if</span> (nil == image) {
<span class="indent">  </span><span class="indent">  </span>newimage = nil;
<span class="indent">  </span>}
<span class="indent">  </span><span class="keyword">else</span>{
<span class="indent">  </span><span class="indent">  </span>CGSize oldsize = image.size;
<span class="indent">  </span><span class="indent">  </span>CGRect rect;
<span class="indent">  </span><span class="indent">  </span><span class="keyword">if</span> (asize.width/asize.height > oldsize.width/oldsize.height) {
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>rect.size.width = asize.height*oldsize.width/oldsize.height;
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>rect.size.height = asize.height;
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>rect.origin.x = (asize.width - rect.size.width)/<span class="number">2</span>;
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>rect.origin.y = <span class="number">0</span>;
<span class="indent">  </span><span class="indent">  </span>}
<span class="indent">  </span><span class="indent">  </span><span class="keyword">else</span>{
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>rect.size.width = asize.width;
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>rect.size.height = asize.width*oldsize.height/oldsize.width;
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>rect.origin.x = <span class="number">0</span>;
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>rect.origin.y = (asize.height - rect.size.height)/<span class="number">2</span>;
<span class="indent">  </span><span class="indent">  </span>}
<span class="indent">  </span><span class="indent">  </span>UIGraphicsBeginImageContext(asize);
<span class="indent">  </span><span class="indent">  </span>CGContextRef context = UIGraphicsGetCurrentContext();
<span class="indent">  </span><span class="indent">  </span>CGContextSetFillColorWithColor(context, [[UIColor clearColor] CGColor]);
<span class="indent">  </span><span class="indent">  </span>UIRectFill(CGRectMake(<span class="number">0</span>, <span class="number">0</span>, asize.width, asize.height));<span class="comment">//clear background</span>
<span class="indent">  </span><span class="indent">  </span>[image drawInRect:rect];
<span class="indent">  </span><span class="indent">  </span>newimage = UIGraphicsGetImageFromCurrentImageContext();
<span class="indent">  </span><span class="indent">  </span>UIGraphicsEndImageContext();
<span class="indent">  </span>}
<span class="indent">  </span><span class="keyword">return</span> newimage;
}

3.显示圆形头像

NSArray <span class="variable">*paths</span> = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
<span class="indent">  </span>NSString <span class="variable">*documentsDirectory</span> = [paths objectAtIndex:<span class="number">0</span>];
<span class="indent">  </span>NSString <span class="variable">*imageFilePath</span> = [documentsDirectory stringByAppendingPathComponent:<span class="variable">@"</span>selfPhoto.jpg<span class="string">"];
<span class="indent">  </span>NSLog(<span class="variable">@"</span>imageFile->><span class="variable">%@</span>"</span>,imageFilePath);
<span class="indent">  </span>UIImage <span class="variable">*selfPhoto</span> = [UIImage imageWithContentsOfFile:imageFilePath];<span class="regexp">//</span>
<span class="indent">  </span>self.img.image = selfPhoto;
<span class="indent">  </span>[self.img.layer setCornerRadius:CGRectGetHeight([self.img bounds]) / <span class="number">2</span>];  <span class="regexp">//</span>修改半径,实现头像的圆形化
<span class="indent">  </span>self.img.layer.masksToBounds = YES;

iOS实现头像选取(照相或者图片库)、大小等比缩放、生成圆形头像相关推荐

  1. android生成圆形头像

    /*各种各样的图如何如何生成圆形头像,请下面看下面,可以先用bitmp直接用 Bitmap.createScaledBitmap(),如果是存到数据库里面的话,先把转它转成string,然后放取出来, ...

  2. php gd库 圆形头像,基于 GD 库生成圆形头像

    基于 GD 库生成圆形头像 laravel 友好的图片处理库 Intervention Image 可以绘制圆形(circle()), 但是好像并不能将即存的图片裁剪成圆形, 这里提供一个基于 GD ...

  3. php生成固定大小缩略图变形,php按指定大小等比缩放生成上传图片缩略图_PHP教程...

    php教程按指定大小等比缩放生成上传图片缩略图 /** * * *等比缩放 * @param unknown_type $srcImage 源图片路径 * @param unknown_type $t ...

  4. php生成固定大小缩略图变形,php实现按指定大小等比缩放生成上传图片缩略图的方法_PHP...

    本文实例讲述了php实现按指定大小等比缩放生成上传图片缩略图的方法.分享给大家供大家参考.具体实现方法如下: 代码如下: /** * * *等比缩放 * @param unknown_type $sr ...

  5. iOS---头像选取(照相或者图片库)、大小等比缩放、生成圆形头像

    转载自:http://www.lvtao.net/ios/509.html //弹出actionsheet.选择获取头像的方式 //从相册获取图片 -(void)takePictureClick:(U ...

  6. 微信小程序海报画布生成圆形头像

    由于海报需求将用户头像在海报上呈圆形 实现过程如下 // 绘制圆形头像 //绘制的头像宽度let avatarurl_width = 40 //绘制的头像高度let avatarurl_heigth ...

  7. python和本人很像的卡通头像_用Python做一个网站,照片生成漫画头像,有这个网站就够了。...

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云 作者:Python进阶者 对于动漫,大家一定都不陌生,小编周 ...

  8. java 海报二: 如何生成圆形头像

    直接上代码 //测试头像 String url = "https://thirdwx.qlogo.cn/mmopen/vi_32/ibwibmjniabu5JFwMl1Ju5drHnibjm ...

  9. itchat 保存好友信息以及生成好友头像图片墙

    2019 第 41 篇,总第 65 篇文章 本文大约 4000 字,阅读大约需要 12 分钟 最近简单运用 itchat 这个库来实现一些简单的应用,主要包括以下几个应用: 统计保存好友的数量和信息 ...

最新文章

  1. 小A与欧拉路(牛客-树的直径)
  2. Exchange工具11—性能监视器
  3. ZooKeeper伪分布式集群安装及使用
  4. java的3个初始化_通过实例解析Java类初始化和实例初始化
  5. Cloud for Customer UI Designer里embedded component刷新的讨论
  6. c/c++ 数组和指针
  7. 常用技巧性CSS:颜色渐变,截断英文单词,阴影文字.
  8. 按键精灵 识别html,【院刊】-【201409期】抓取网页指定内容(资料),获取网页里的图片 _ 学院院刊 - 按键精灵论坛...
  9. Allegro视频教程
  10. 计算机职业规划书备选方案,职业规划书备选方案
  11. 【024】基于51单片机的电子琴加音乐播放器系统Proteus仿真设计
  12. react后台管理项目
  13. 元界Metaverse清单:你需要知道的一切
  14. php orc 验证码,百度图片识别orc实现普通验证码识别
  15. “3G域名”遭恶炒 用友移动代理被指画饼圈钱
  16. 1078 字符串压缩与解压
  17. 白话Elasticsearch59-数据建模实战_ Nested Aggregation/ Reverse nested Aggregation对嵌套的博客评论数据进行聚合分析
  18. 软件测试可以分为哪几个类型?
  19. ObjectArx自定义实体入门(C++)及注意事项
  20. 联盟商家入驻三级分销商城系统开发app

热门文章

  1. 各类船舶作业注意事项(昼夜计划表)
  2. 02.Kubernetes 和 KubeSphere 集群安装配置持久化存储(nfs)并通过StatefulSet动态为pod生成pv挂载
  3. UEFI启动模式下安装win10Ubuntu 16.04双系统
  4. pyhton mechanize 学习笔记
  5. Java字符串中分隔符的字符串和数组的转换
  6. Java 生成二维码 Qrcode
  7. 王道考研2021——数据结构学习笔记
  8. 硬件设计分享-⑦天线设计
  9. BaiduMap SDK-BusLineSearch(公交路线查询)
  10. 五步制作出人见人爱的数据仪表板