文档章节

ios 使用UIImagePickerController 修改头像

哈喽_阳光
 哈喽_阳光
发布于 2015/06/19 09:41
字数 494
阅读 24
收藏 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
广州
私信 提问
iOS 使用UIImagePickerController 拍照

在项目开发的过程中,我们经常会使用的iPhone 或者 iPad 的拍照功能,比如给用户设置头像,一般都会用到拍照功能。我们可以使用UIImagePickerController 类来调用iPhone的摄像头进行拍照或者...

广州英趣科技
2013/06/23
0
2
xcode5 ios7 status bar 各种隐藏问题

各种关于ios7 下隐藏status bar的问题。汇集一下: 用xcode5开发新的iOS游戏,虽然我已经在info.plist里面把Status bar is initially hidden设置成了YES,但在设备上一跑还是看到status bar,...

常思过
2014/03/20
0
0
iOS 设置UIImagePickerController显示中文页面

iOS开发中,在使用UIImagePickerController调用相机时,页面是显示的英文,修改成中文页面方法: 1. Project-->Info-->Localizations 添加 Chinese 2. Target-->Info-->Localization native......

琳小兮
07/13
0
0
程序员随笔:使用来自服务器的图像(有源码)

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

菇哒微课
04/25
0
0
iOS涂色涂鸦效果、Swift仿喜马拉雅FM、抽屉转场动画、拖拽头像、标签选择器等源码

iOS精选源码 LeeTagView 标签选择控件(http://www.code4app.com/thread-31033-1-1.html) 为您的用户显示界面添加美观的加载视图(http://www.code4app.com/thread-31038-1-1.html) Swift4: 可......

sunnyaigd
09/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

windows上类似dnsmasq的软件Dual DHCP DNS Server

官网地址:http://dhcp-dns-server.sourceforge.net/官网定向的下载地址:https://sourceforge.net/projects/dhcp-dns-server/files/ 设置参考地址:http://blog.51cto.com/zhukeqiang/18264......

xueyuse0012
今天
1
0
LinkedHashMap源码解析

前言 HashMap中的元素时无序的,也就是说遍历HashMap的时候,顺序和放入的顺序是不一样的。 如果需要有序的Map,就可以采用LinkedHashMap. LinkedHashMap通过维护一个包含所有元素的双向链表,...

grace_233
今天
3
0
初识flask

文档 0.10.1版本 http://www.pythondoc.com/flask/index.html 1.0.2版本 https://dormousehole.readthedocs.io/en/latest/ 安装flask $ pip3 install flaskCollecting flask Downloading......

yimingkeji
昨天
4
0
Akka系统《sixteen》译

Actor是一个封装状态(state)和行为(behavior)的对象,它们只通过交换消息通信(放入收件人邮箱的邮件)。从某种意义上说,Actor是最严格的面向对象编程形式,但它更适合将他们视为人:在与Act...

woshixin
昨天
1
0
技术工坊|如何开发一款以太坊钱包(深圳)

【好消息!】HiBlock区块链技术工坊已经成功举办了26期,其中北京1期,西安1期,成都2期,上海22期。经常有社区的小伙伴问定期举办技术工坊的除了上海以外,其他城市有没有?现在区块链技术工...

HiBlock
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部