文档章节

ios 使用UIImagePickerController 修改头像

哈喽_阳光
 哈喽_阳光
发布于 2015/06/19 09:41
字数 494
阅读 23
收藏 0
点赞 0
评论 0

- (void)viewDidLoad  

{  

    [super viewDidLoad];  

    //获取Documents文件夹目录    

    NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);    

    NSString *documentPath = [path objectAtIndex:0];    

    //指定新建文件夹路径    

    NSString *imageDocPath = [documentPath stringByAppendingPathComponent:@"ImageFile"];    

    //创建ImageFile文件夹    

    [[NSFileManager defaultManager] createDirectoryAtPath:imageDocPath withIntermediateDirectories:YES attributes:nil error:nil];    

    //保存图片的路径   

    self.imagePath = [imageDocPath stringByAppendingPathComponent:@"image.png"];  

     

}  

  

-(void)viewWillAppear:(BOOL)animated{  

    [super viewWillAppear:YES];  

    //根据图片路径载入图片  

    UIImage *image=[UIImage imageWithContentsOfFile:self.imagePath];  

    if (image == nil) {  

        //显示默认  

        [changeImg setBackgroundImage:[UIImage imageNamed:@"user_photo@2x.png"] forState:UIControlStateNormal];  

    }else {  

        //显示保存过的  

        [changeImg setBackgroundImage:image forState:UIControlStateNormal];  

    }  

}  

  

- (void)dealloc {  

    [imagePath release];  

    [changeImg release];  

    [super dealloc];  

}  

- (IBAction)changeImage:(id)sender {  

    UIActionSheet *myActionSheet = [[UIActionSheet alloc]                      

                                    initWithTitle:nil  

                                    delegate:self  

                                    cancelButtonTitle:@"取消"  

                                    destructiveButtonTitle:nil  

                                    otherButtonTitles: @"从相册选择", @"拍照",nil];   

    [myActionSheet showInView:self.view];  

    [myActionSheet release];   

}  

-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex{  

    switch (buttonIndex) {  

        case 0:  

            //从相册选择  

            [self LocalPhoto];  

            break;  

        case 1:  

            //拍照  

            [self takePhoto];  

            break;  

        default:  

            break;  

    }  

}  

//从相册选择  

-(void)LocalPhoto{  

    UIImagePickerController *picker = [[UIImagePickerController alloc] init];    

    //资源类型为图片库  

    picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;  

    picker.delegate = self;  

    //设置选择后的图片可被编辑  

    picker.allowsEditing = YES;  

    [self presentModalViewController:picker animated:YES];  

    [picker release];  

}  

  

//拍照  

-(void)takePhoto{  

    //资源类型为照相机  

    UIImagePickerControllerSourceType sourceType = UIImagePickerControllerSourceTypeCamera;  

    //判断是否有相机  

    if ([UIImagePickerController isSourceTypeAvailable: UIImagePickerControllerSourceTypeCamera]){  

        UIImagePickerController *picker = [[UIImagePickerController alloc] init];  

        picker.delegate = self;  

        //设置拍照后的图片可被编辑  

        picker.allowsEditing = YES;  

        //资源类型为照相机  

        picker.sourceType = sourceType;  

        [self presentModalViewController:picker animated:YES];  

        [picker release];  

    }else {  

        NSLog(@"该设备无摄像头");  

    }  

}  

#pragma Delegate method UIImagePickerControllerDelegate    

//图像选取器的委托方法,选完图片后回调该方法    

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo{  

      

    //当图片不为空时显示图片并保存图片  

    if (image != nil) {    

        //图片显示在界面上  

        [changeImg setBackgroundImage:image forState:UIControlStateNormal];  

          

        //以下是保存文件到沙盒路径下  

        //把图片转成NSData类型的数据来保存文件  

        NSData *data;  

        //判断图片是不是png格式的文件  

        if (UIImagePNGRepresentation(image)) {  

            //返回为png图像。  

            data = UIImagePNGRepresentation(image);  

        }else {  

            //返回为JPEG图像。  

            data = UIImageJPEGRepresentation(image, 1.0);  

        }  

        //保存  

        [[NSFileManager defaultManager] createFileAtPath:self.imagePath contents:data attributes:nil];  

          

    }    

    //关闭相册界面  

    [picker dismissModalViewControllerAnimated:YES];  


// 改变图像的尺寸,方便上传服务器
- (UIImage *) scaleFromImage: (UIImage *) image toSize: (CGSize) size
{
    UIGraphicsBeginImageContext(size);
    [image drawInRect:CGRectMake(0, 0, size.width, size.height)];
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return newImage;
}


本文转载自:http://blog.csdn.net/jinglijun/article/details/8030544

共有 人打赏支持
哈喽_阳光
粉丝 1
博文 9
码字总数 2832
作品 0
广州
程序员随笔:使用来自服务器的图像(有源码)

如果您是移动应用程序开发人员,则在某个时间点您需要与后端进行互动。您可能需要做的其中一项任务是从服务器检索并显示图像,或将图像提交给该服务器。提交图像时应该使用什么格式?如何将从...

菇哒微课 ⋅ 04/25 ⋅ 0

Dhar/YTTInjectedContentKit

YTTInjectedContentKit iOS壳版本场景下的批量修改类名、属性名、插入混淆代码、修改项目名称的shell脚本 具体的实现和使用方法请参考我的博客文章: iOS使用shell脚本注入混淆内容 iOS使用S...

Dhar ⋅ 05/04 ⋅ 0

【AR】开始使用Vuforia开发iOS(2)

原 设置iOS开发环境 安装Vuforia iOS SDK 如何安装Vuforia iOS示例 编译并运行Vuforia iOS示例 支持iOS金属 iOS 64位迁移 设置iOS开发环境 适用于iOS的Vuforia引擎目前支持运行iOS 9及更高版...

lichong951 ⋅ 06/11 ⋅ 0

转:一套代码iOS、Android两端运行,Google Flutter意味着什么?

原文:https://www.toutiao.com/a6569388465538990600/?ttfrom=weixin&utmcampaign=clientshare×tamp=1529580533&app=newsarticle&utmsource=weixin&iid=35476649324&utmmedium=toutiao......

鸿蒙无上至尊 ⋅ 今天 ⋅ 0

面试官自述:面向高级开发人员的iOS面试问题

当您准备进行技术性iOS面试时,了解您可能会询问哪些主题以及经验丰富的iOS开发人员期望什么是非常重要的。 这是许多硅谷公司用来衡量iOS候选人资历水平的一系列问题。 这些问题涉及iOS开发的...

菇哒微课 ⋅ 04/26 ⋅ 0

iOS原生混合RN开发最佳实践

做过原生iOS开发或者Android开发的同学们肯定也都了解Hybrid,有一些Hybrid的开发经验,目前我们企业开发中运用最广泛的Hybrid App技术就是原生与H5 hybrid,在早期的时候,可能部分同学也接...

光强 ⋅ 05/16 ⋅ 0

iOS三维菜单、调试工具、封装通讯录、网络框架、多种控件和动画等源码

iOS精选源码 一个调用系统通讯录和获取通讯录所有联系人的封装(http://www.code4app.com/thread-29726-1-1.html) ios scrollview嵌套tableview同向滑动(初级、进阶), 支持OC / Swift(http...

sunnyaigd ⋅ 05/15 ⋅ 0

天生不凡ios怎么在电脑上玩 天生不凡ios电脑版玩法教程

天生不凡ios怎么在电脑上玩呢?现在有很多小伙伴都在玩天生不凡手游,不过相对于传统的在手机上进行游戏,很多人都倾向于新玩法,就是在电脑上玩天生不凡手游。下面小编就给亲们介绍下天生不...

kaopu8520 ⋅ 05/29 ⋅ 0

常见的移动端H5页面开发遇到的坑和解决办法

手机共通问题 问题一:用同等比例的图片在PC机上很清楚,但是手机上很模糊,原因是什么呢? 经研究发现是devicePixelRatio作怪,因为手机分辨率太小,如果按照分辨率来显示网页字会非常小,所以苹果...

webmirror ⋅ 05/02 ⋅ 0

iOS ZipperDown 漏洞来袭,我们该如何应对?

  昨天傍晚盘古实验室负责任的披露了针对 iOS 应用的 ZipperDown 漏洞,并提供了检索、查询受影响应用的平台: zipperdown.com。基于目前公开的信息,该漏洞的影响面比较大,15000 多个应用...

FreeBuf ⋅ 05/16 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

MySQL 数据库设计总结

规则1:一般情况可以选择MyISAM存储引擎,如果需要事务支持必须使用InnoDB存储引擎。 注意:MyISAM存储引擎 B-tree索引有一个很大的限制:参与一个索引的所有字段的长度之和不能超过1000字节...

OSC_cnhwTY ⋅ 57分钟前 ⋅ 0

多线程(四)

线程池和Exector框架 什么是线程池? 降低资源的消耗 提高响应速度,任务:T1创建线程时间,T2任务执行时间,T3线程销毁时间,线程池没有或者减少T1和T3 提高线程的可管理性。 线程池要做些什...

这很耳东先生 ⋅ 今天 ⋅ 0

使用SpringMVC的@Validated注解验证

1、SpringMVC验证@Validated的使用 第一步:编写国际化消息资源文件 编写国际化消息资源ValidatedMessage.properties文件主要是用来显示错误的消息定制 [java] view plain copy edit.userna...

瑟青豆 ⋅ 今天 ⋅ 0

19.压缩工具gzip bzip2 xz

6月22日任务 6.1 压缩打包介绍 6.2 gzip压缩工具 6.3 bzip2压缩工具 6.4 xz压缩工具 6.1 压缩打包介绍: linux中常见的一些压缩文件 .zip .gz .bz2 .xz .tar .gz .tar .bz2 .tar.xz 建立一些文...

王鑫linux ⋅ 今天 ⋅ 0

6. Shell 函数 和 定向输出

Shell 常用函数 简洁:目前没怎么在Shell 脚本中使用过函数,哈哈,不过,以后可能会用。就像java8的函数式编程,以后获取会用吧,行吧,那咱们简单的看一下具体的使用 Shell函数格式 linux ...

AHUSKY ⋅ 今天 ⋅ 0

单片机软件定时器

之前写了一个软件定时器,发现不够优化,和友好,现在重写了 soft_timer.h #ifndef _SOFT_TIMER_H_#define _SOFT_TIMER_H_#include "sys.h"typedef void (*timer_callback_function)(vo...

猎人嘻嘻哈哈的 ⋅ 今天 ⋅ 0

好的资料搜说引擎

鸠摩搜书 简介:鸠摩搜书是一个电子书搜索引擎。它汇集了多个网盘和电子书平台的资源,真所谓大而全。而且它还支持筛选txt,pdf,mobi,epub、azw3格式文件。还显示来自不同网站的资源。对了,...

乔三爷 ⋅ 今天 ⋅ 0

Debian下安装PostgreSQL的表分区插件pg_pathman

先安装基础的编译环境 apt-get install build-essential libssl1.0-dev libkrb5-dev 将pg的bin目录加入环境变量,主要是要使用 pg_config export PATH=$PATH:/usr/lib/postgresql/10/bin 进......

玛雅牛 ⋅ 今天 ⋅ 0

inno安装

#define MyAppName "HoldChipEngin" #define MyAppVersion "1.0" #define MyAppPublisher "Hold Chip, Inc." #define MyAppURL "http://www.holdchip.com/" #define MyAppExeName "HoldChipE......

backtrackx ⋅ 今天 ⋅ 0

Linux(CentOS)下配置php运行环境及nginx解析php

【part1:搭建php环境】 1.选在自己需要安装的安装包版本,wget命令下载到服务器响应目录 http://php.net/releases/ 2.解压安装包 tar zxf php-x.x.x 3.cd到解压目录执行如下操作 cd ../php-...

硅谷课堂 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部