1. 导入四个拍照依赖的框架
.framework框架
2. 在相应controller中引入头文件
头文件然后不要忘记遵守协议UIImagePickerControllerDelegate
3. 设置拍照绑定的方法和相关属性
(1)判断是否有摄像头。
判断摄像头(2)设置属性
UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init];
imagePickerController.delegate = self; // 设置委托
imagePickerController.sourceType = sourceType;
imagePickerController.allowsEditing = YES;
下面这个属性的意义是,iOS8以后拍照的页面跳转会卡顿几秒中,加入这个属性,卡顿消失,啦啦啦
imagePickerController.modalPresentationStyle=UIModalPresentationOverCurrentContext;
下面进行拍照的页面跳转,这里用的是模态的形式展示
[self presentViewController:imagePickerController animated:YES completion:nil];
3. 进入拍照页面,拍照完成后点击使用照片,会自动调用下面的方法
//完成拍照
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
(1)定义UIImage类型image将得到的图片给到image
image = [info objectForKey:UIImagePickerControllerEditedImage];
if (image == nil)
image = [info objectForKey:UIImagePickerControllerOriginalImage];
(2)将得到的图片储存在沙盒下
tempImage 是所得到的照片
imageName 是路径的名字(这里我使用的是拍照时的时间)
- (BOOL)saveImage:(UIImage *)tempImage WithName:(NSString *)imageName
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
NSString *filePath = [[paths objectAtIndex:0] stringByAppendingPathComponent:[NSString stringWithFormat:@"%@",imageName]];
// 保存文件的名称
BOOL result = [UIImagePNGRepresentation(tempImage)writeToFile: filePath atomically:YES];
return result;
}
(3)对照片进行处理,通常拍照功能都是将照片上传至网络,这时候需要对图片进行相应的压缩处理,图片转换成data的方法
NSData *data=UIImageJPEGRepresentation(image, 1.0);
根据图片大小,对图片进行不同程度的压缩(根据情况而定)
if (data.length>100*1024) {
if (data.length>1024*1024) {//1M以及以上
data1=UIImageJPEGRepresentation(image, 0.1);
}else if (data.length>512*1024) {//0.5M-1M
data1=UIImageJPEGRepresentation(image, 0.4);
}else if (data.length>200*1024) {//0.25M-0.5M
data1=UIImageJPEGRepresentation(image, 0.6);
}
}
4. 将照片发送到服务器,这里我使用的是NSURLSession。
(1)我用的post方法,首先是基本设置
//构造URL
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@""]];
//构造Request
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
//设置为POST请求
[request setHTTPMethod:@"POST"];
//超时
[request setTimeoutInterval:20];
(2)设置请求头和请求体
[request setValue: forHTTPHeaderField:];
//这里的data就是图片转换后的data
[request setHTTPBody:data];
(3)构造Session
NSURLSession *session = [NSURLSession sharedSession];
(4)设置网络请求方法
NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error){
}
END!!!!!!
网友评论