iOS 调用相机,获取相册,截取头像

iOS 调用相机,获取相册,截取头像

前言

应用经常需要使用到用户提供的图像。iOS提供了两种方式:UIImagePickerController和资产库:(asset library)。UIImagePickerController提供了导航相册和照片的模态用户界面,适合在应用没有特殊的照片浏览和选择需求(即Apple提供的风格就能满足要求)时使用;资产库提供了全面的照片和相册访问功能,适合在图像导航和选择有特殊用户页面和风格需求时使用。

具体实现代码说明

调用相机前,先检查当前是否支持相机

[UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]

跳转到系统相关页面,比如相机页面或者相册页面还有系统联系人页面,都会用到模块化的页面跳转方式,代码如下:

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

imagePickerController.delegate = self;

imagePickerController.allowsEditing = YES;

imagePickerController.sourceType = sourceType;

[self presentViewController:imagePickerController animated:YES completion:^{}];

在进行系统的拍照活动时,系统拍照页面会有返回和使用图片的按钮,点击这两个按钮会响应不同的协议方法:

#pragma mark - image picker delegte
//用户点击选取器中的“choose”按钮时被调用,告知委托对象,选取操作已经完成,同时将返回选取图片的实例
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    [picker dismissViewControllerAnimated:YES completion:^{}];

    UIImage *image = [info objectForKey:UIImagePickerControllerEditedImage];
    /* 此处info 有六个值
     * UIImagePickerControllerMediaType; // an NSString UTTypeImage)
     * UIImagePickerControllerOriginalImage;  // a UIImage 原始图片
     * UIImagePickerControllerEditedImage;    // a UIImage 裁剪后图片
     * UIImagePickerControllerCropRect;       // an NSValue (CGRect)
     * UIImagePickerControllerMediaURL;       // an NSURL
     * UIImagePickerControllerReferenceURL    // an NSURL that references an asset in the AssetsLibrary framework
     * UIImagePickerControllerMediaMetadata    // an NSDictionary containing metadata from a captured photo
     */
    // 保存图片至本地,方法见下文
    [self saveImage:image withName:@"currentImage.png"];

    NSString *fullPath = [[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"] stringByAppendingPathComponent:@"currentImage.png"];

    UIImage *savedImage = [[UIImage alloc] initWithContentsOfFile:fullPath];

    isFullScreen = NO;
    [self.headerImage setImage:savedImage];

    self.headerImage.tag = 100;

}
//用户点击图像选取器中的“cancel”按钮时被调用,这说明用户想要中止选取图像的操作
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
{
    [self dismissViewControllerAnimated:YES completion:^{}];
}

当使用刚才拍的照片作为头像时,你可以使用该属性,这样你获取到的就是裁剪后的图片。

UIImagePickerControllerEditedImage;

但是若你没有对图像进行编辑,那么该键值对下面是没有该属性的,在开发过程中需要注意这一点。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值