文档章节

ios 使用UIImagePickerController 修改头像

哈喽_阳光
 哈喽_阳光
发布于 2015/06/19 09:41
字数 494
阅读 77
收藏 0

精选30+云产品,助力企业轻松上云!>>>

- (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;
}


哈喽_阳光
粉丝 1
博文 9
码字总数 2832
作品 0
广州
私信 提问
加载中
请先登录后再评论。
iOS----------调用系统照相机和相册

iOS 10 以后记得在plist里面添加获取拍照和相册权限,iOS 10 以后记得在plist里面添加获取拍照和相册权限,iOS 10 以后记得在plist里面添加获取拍照和相册权限,iOS 10 以后记得在plist里面添...

osc_ig41za10
2018/01/12
17
0
iOS 使用UIImagePickerController 拍照

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

广州英趣科技
2013/06/23
1.6W
2
iOS 开发幸运飞艇平台出租实践:iOS照片API的那些坑

在和幸运飞艇平台出租【大神源码论坛】dsluntan.com 【布丁源码论坛】budingbbs.com 企娥3393756370 图片打交道的那些日子里,遇到过不少图片相关的诡异问题。 在这里不会具体对照片API做介绍...

ds15708020273
2018/07/17
0
0
xcode5 ios7 status bar 各种隐藏问题

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

常思过
2014/03/20
1.1K
0
打开摄像头和相册

iOS摄像头和相册-UIImagePickerController-浅析 (2013-04-05 19:16:26) 转载▼ 标签: uiimagepickercontrol ios摄像头 ios相册 iphone 分类: 帮助文档 在一些应用中,我们需要用到iOS设备的...

HeroHY
2016/04/20
8
0

没有更多内容

加载失败,请刷新页面

加载更多

java常用开发支持类库

UUID类 UUID是一个生成无重复字符串的程序类(JDK1.5之后出现),这个程序类的主要功能是根据时间戳实现一个自动的无重复的字符串定义(无重复指的是出现重复的概率极低)。 一般在获取UUID时...

哼着我的小调调
9分钟前
15
0
亚马逊测评买家号多开_可以解决这个问题嘛?_微信公众号: VMlogin中文版

对于很多亚马逊卖家来说,做亚马逊测评是并不可少的,都在为了自己的店铺能够获得更多的销售,着重培养自己产品的各项属性,以求获得一个更好的权重排名从而获得更多的曝光,但是在旺季期间亚...

竹节猫-ASOer
15分钟前
0
0
从封装变化的角度看设计模式——对象创建

封装变化之对象创建 在对象创建的过程中,经常会出现的一个问题就是通过显示地指定一个类来创建对象,从而导致紧耦合。这是因为创建对象时指定类名将使你受特定实现的约束而不是特定接口的约...

良许Linux
17分钟前
0
0
Java基础系列——数组之java.util.Arrays使用以及可能出现的异常(12)

java.util.Arrays类即为操作数组的工具类,包含了用来操作数组(比 如排序和搜索)的各种方法。常用方法如下所示: boolean equals(int[] a,int[] b) 判断两个数组是否相等。 String toStrin...

卢佳鹏
30分钟前
19
0
Excel 2016如何删除带超链接表格前空格?

本文演示文档包含超链接。如图 先尝试使用trim和clean函数,=substitute(a1,char(9),"")公式。效果完全一致,超链接被删除。如下图 再次使用搜索引擎,网友给出建议,先提取超链接,删除空格...

白豆腐徐长卿
31分钟前
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部