十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
调用相机拍照并获取图片和打开系统相册获取图片是我们经常见到的常用功能。其实这些功能做起来十分简单,几步即可。
网站设计、网站制作的开发,更需要了解用户,从用户角度来建设网站,获得较好的用户体验。创新互联公司多年互联网经验,见的多,沟通容易、能帮助客户提出的运营建议。作为成都一家网络公司,打造的就是网站建设产品直销的概念。选择创新互联公司,不只是建站,我们把建站作为产品,不断的更新、完善,让每位来访用户感受到浩方产品的价值服务。
在info.plist文件中添加对照相机和相册获取的权限,如下图
初始化UIImagePickerController ,并添加相应设置,如下
需要添加UIImagePickerControllerDelegate和UINavigationControllerDelegate这两个代理,并在代理中实现相应方法,如下
根据不同的需求设置类型即可,如下:
打开相机:
[cpp] view plain copy
//先设定sourceType为相机,然后判断相机是否可用(ipod)没相机,不可用将sourceType设定为相片库
UIImagePickerControllerSourceType sourceType = UIImagePickerControllerSourceTypeCamera;
// if (![UIImagePickerController isSourceTypeAvailable: UIImagePickerControllerSourceTypeCamera]) {
// sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
// }
//sourceType = UIImagePickerControllerSourceTypeCamera; //照相机
//sourceType = UIImagePickerControllerSourceTypePhotoLibrary; //图片库
//sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum; //保存的相片
UIImagePickerController *picker = [[UIImagePickerController alloc] init];//初始化
picker.delegate = self;
picker.allowsEditing = YES;//设置可编辑
picker.sourceType = sourceType;
[self presentModalViewController:picker animated:YES];//进入照相界面
[picker release];
打开相册:(区分pad和iphone)
for iphone:
[cpp] view plain copy
UIImagePickerController *pickerImage = [[UIImagePickerController alloc] init];
if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) {
pickerImage.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
//pickerImage.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
pickerImage.mediaTypes = [UIImagePickerController availableMediaTypesForSourceType:pickerImage.sourceType];
}
pickerImage.delegate = self;
pickerImage.allowsEditing = NO;
[self presentModalViewController:pickerImage animated:YES];
[pickerImage release];
for ipad:
[cpp] view plain copy
UIImagePickerControllerSourceType sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
//sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum; //保存的相片
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
picker.allowsEditing = NO;//是否允许编辑
picker.sourceType = sourceType;
/*
如果从一个导航按钮处呈现,使用:
presentPopoverFromBarButtonItem:permittedArrowDirections:animated:;
如果要从一个视图出呈现,使用:
presentPopoverFromRect:inView:permittedArrowDirections:animated:
如果设备旋转以后,位置定位错误需要在父视图控制器的下面方法里面重新定位:
didRotateFromInterfaceOrientation:(在这个方法体里面重新设置rect)
然后再次调用:
- (void)presentPopoverFromRect:(CGRect)rect inView:(UIView *)view permittedArrowDirections:(UIPopoverArrowDirection)arrowDirections animated:(BOOL)animated
*/
//UIPopoverController只能在ipad设备上面使用;作用是用于显示临时内容,特点是总是显示在当前视图最前端,当单击界面的其他地方时自动消失。
UIPopoverController *popover = [[UIPopoverController alloc]initWithContentViewController:picker];
self.imagePicker = popover;
//permittedArrowDirections 设置箭头方向
[self.imagePicker presentPopoverFromRect:CGRectMake(0, 0, 300, 300) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
[picker release];
[popover release];
点击相册中的图片 货照相机照完后点击use 后触发的方法
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary
*)info
点击cancel 调用的方法
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
if (is_ios7) {
AVAuthorizationStatus authstatus = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];
if (authstatus ==AVAuthorizationStatusRestricted || authstatus ==AVAuthorizationStatusDenied) //用户关闭了权限
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示" message:@"请在设备的设置-隐私-相机中允许访问相机。" delegate:self cancelButtonTitle:@"确定" otherButtonTitles:nil];
[alert show];
return;
}
ALAuthorizationStatus author = [ALAssetsLibrary authorizationStatus];
if (author == kCLAuthorizationStatusRestricted || author ==kCLAuthorizationStatusDenied)//用户关闭了权限
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示" message:@"请在设备的设置-隐私-照片中允许访问照片。" delegate:self cancelButtonTitle:@"确定" otherButtonTitles:nil];
[alert show];
return;
}
}
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
//相册是可以用模拟器打开
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) {
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
picker.sourceType = UIImagePickerControllerSourceTypeCamera;
picker.allowsEditing = YES;
[self presentViewController:picker animated:YES completion:nil];
}else{
UIAlertView *alter = [[UIAlertView alloc] initWithTitle:@"Error" message:@"没有相册" delegate:nil cancelButtonTitle:@"取消" otherButtonTitles:nil, nil];
[alter show];
}
}else{
[MBProgressHUD showMessag:@"无法打开相机" toView:Main_WINDOW];
NSLog(@"模拟器无法打开相机");
}
该框架框架包含视频相关的APIs和音频相关的APIs。
针对音频及视频,其主要提供的功能可以归纳为4各方面:
1)、Capture
音频、视频、图像媒体的捕捉,并输出我们可用的数据对象的过程。
2)、Edit
针对现有的媒体片段(音频片段或视频片段),重新创建Assets,重新加工、生成新的媒体片段。例如,Reading, Writing, Reencoding Assets, Thumbnails
3)、Export
提供导出音视频的API。例如,修改文件格式、消减时长等。
4)、Presentation
例如,播放、音视频的预览
设备的输入源主要包括:麦克风(Microphone),摄像头(Camera),屏幕等
输入源一般包括:AVCaptureVideoPreviewLayer,AVCaptureAudioPreviewOutput,文件、Raw Buffer等。
从一个设备,例如照相机或者麦克风管理捕获,组合对象来表示输入和输出,并使用 AVCaptureSession 的实例来协调它们之间的数据流。
一个简单的会话协调:
AVCapture Session作为整个Capture的核心,不断从输入源获取数据,然后分发给各个输出源,从而完成一次简单的会话。
AVCaptureSession参数配置
开始会话
结束会话
然而,很多情况下,需要考虑多个输入源是如何被表示以及如何连接到输出。
输入源有自己的硬件参数可以设置流控,输出源作为一个被动接受对象,它并没有太多流控设置,所以苹果巧妙的引入AVCaptureConnections。每个Output与Session建立连接后,都会分配一个默认的AVCpatureConnection。
AVCaptureConnections就是Session和Output中间的控制节点。很多实时数据,也都是从connection得到的。
输入设备的配置
输出的配置
接收输出资源
1)、视频
2)、照片输出
判断相机的
AVAuthorizationStatus status = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];
if (status == AVAuthorizationStatusDenied || status == AVAuthorizationStatusRestricted) {
return NO;
} else {
return YES;
}
判断相册的
ALAuthorizationStatus status = [ALAssetsLibrary authorizationStatus];
if (status == kCLAuthorizationStatusDenied || kCLAuthorizationStatusRestricted) {
return NO;
} else {
return YES;
}
你好!
“在光线暗”的环境中拍照时不能按下不能拍照快门--- 相机无法对焦时,快门是不会启动的。
除了采用夜间模式、打开闪光灯、打开对焦辅助灯外,还可以采取下列措施,提高对焦成功率:
1、提高ISO值(比如提高为ISO400、800、1600甚至更高)。
ISO数值的大小是数码相机对光线反应的敏感程度测量值,通常以ISO数值表示,数值越大表示感光性越强,数值越小表示感光性越弱。
在室内光线不足或拍摄夜景时,使用高ISO值能使对焦成功率大为增加。但照片的噪点也会相应增加。
2、如果环境光源偏暗,即可增加曝光值(如调整为+1EV、+2EV)以突显画面的清晰度。
数码相机在拍摄的过程中,如果按下半截快门,液晶屏上就会显示和最终效果图差不多的图片,对焦,曝光一起启动。这个时候的曝光,正是最终图片的曝光度。
图片如果明显偏亮或偏暗,说明相机的自动测光准确度有较大偏差,要强制进行曝光补偿,不过有的时候,拍摄时显示的亮度与实际拍摄结果有一定出入。
数码相机可以在拍摄后立即浏览画面,此时,可以更加准确地看到拍摄出来的画面的明暗程度,不会再有出入。如果拍摄结果明显偏亮或偏暗,则要重新拍摄,强制进行曝光补偿。
另外,关于相机锁定焦点的操作也要注意:
拍摄时,应该先半按下快门,不要松手,将取景屏里的锁焦框对焦拍摄的焦点(比如人物的脸部),待取景屏里的锁焦框一下收小变绿色或相机发出“嘀”一声,就表明焦点已经锁定,此时再加力完全按下快门就行了。
拍照时,还必须保证持机的稳定,机身的抖动也会致使照片失焦而模糊。