UIImagePickerController拍照与摄像
//
// ViewController.h
// Camera
//
// Created by gao wuhang on 12-11-23.
// Copyright (c) 2012年 gao wuhang. All rights reserved.
//
#import
@interface ViewController : UIViewController<</span>UINavigationControllerDelegate, UIImagePickerControllerDelegate>
- (IBAction)takePictureButtonClick:(id)sender;
- (IBAction)captureVideoButtonClick:(id)sender;
@end
//
// ViewController.m
// Camera
//
// Created by gao wuhang on 12-11-23.
// Copyright (c) 2012年 gao wuhang. All rights reserved.
//
#import "ViewController.h"
#import
#import
@interface ViewController ()
@end
@implementation ViewController
- (IBAction)takePictureButtonClick:(id)sender{
//检查相机模式是否可用
if (![UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
NSLog(@"sorry, no camera or camera is unavailable.");
return;
}
//获得相机模式下支持的媒体类型
NSArray* availableMediaTypes = [UIImagePickerController availableMediaTypesForSourceType:UIImagePickerControllerSourceTypeCamera];
BOOL canTakePicture = NO;
for (NSString* mediaType in availableMediaTypes) {
if ([mediaType isEqualToString:(NSString*)kUTTypeImage]) {
//支持拍照
canTakePicture = YES;
break;
}
}
//检查是否支持拍照
if (!canTakePicture) {
NSLog(@"sorry, taking picture is not supported.");
return;
}
//创建图像选取控制器
UIImagePickerController* imagePickerController = [[UIImagePickerController alloc] init];
//设置图像选取控制器的来源模式为相机模式
imagePickerController.sourceType = UIImagePickerControllerSourceTypeCamera;
//设置图像选取控制器的类型为静态图像
imagePickerController.mediaTypes = [[[NSArray alloc] initWithObjects:(NSString*)kUTTypeImage, nil] autorelease];
//允许用户进行编辑
imagePickerController.allowsEditing = YES;
//设置委托对象
imagePickerController.delegate = self;
//以模视图控制器的形式显示
[self presentModalViewController:imagePickerController animated:YES];
[imagePickerController release];
}
- (IBAction)captureVideoButtonClick:(id)sender{
//检查相机模式是否可用
if (![UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
NSLog(@"sorry, no camera or camera is unavailable!!!");
return;
}
//获得相机模式下支持的媒体类型
NSArray* availableMediaTypes = [UIImagePickerController availableMediaTypesForSourceType:UIImagePickerControllerSourceTypeCamera];
BOOL canTakeVideo = NO;
for (NSString* mediaType in availableMediaTypes) {
if ([mediaType isEqualToString:(NSString *)kUTTypeImage]) {
//支持摄像
canTakeVideo = YES;
break;
}
}
//检查是否支持摄像
if (!canTakeVideo) {
NSLog(@"sorry, capturing video is not supported.!!!");
return;
}
//创建图像选取控制器
UIImagePickerController* imagePickerController = [[UIImagePickerController alloc] init];
//设置图像选取控制器的来源模式为相机模式
imagePickerController.sourceType = UIImagePickerControllerSourceTypeCamera;
//设置图像选取控制器的类型为动态图像
imagePickerController.mediaTypes = [[[NSArray alloc] initWithObjects:(NSString*)kUTTypeMovie, nil] autorelease];
//设置摄像图像品质
imagePickerController.videoQuality = UIImagePickerControllerQualityTypeHigh;
//设置最长摄像时间
imagePickerController.videoMaximumDuration = 30;
//允许用户进行编辑
imagePickerController.allowsEditing = YES;
//设置委托对象
imagePickerController.delegate = self;
//以模式视图控制器的形式显示
[self presentModalViewController:imagePickerController animated:YES];
[imagePickerController release];
}
- (void)image:(UIImage*)image didFinishSavingWithError:(NSError*)error contextInfo:(void*)contextInfo{
if (!error) {
NSLog(@"picture saved with no error.");
}
else
{
NSLog(@"error occured while saving the picture%@", error);
}
}
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{
//打印出字典中的内容
NSLog(@"get the media info: %@", info);
//获取媒体类型
NSString* mediaType = [info objectForKey:UIImagePickerControllerMediaType];
//判断是静态图像还是视频
if ([mediaType isEqualToString:(NSString *)kUTTypeImage]) {
//获取用户编辑之后的图像
UIImage* editedImage = [info objectForKey:UIImagePickerControllerEditedImage];
//将该图像保存到媒体库中
UIImageWriteToSavedPhotosAlbum(editedImage, self, @selector(image:didFinishSavingWithError:contextInfo:), NULL);
}else if ([mediaType isEqualToString:(NSString *)kUTTypeMovie])
{
//获取视频文件的url
NSURL* mediaURL = [info objectForKey:UIImagePickerControllerMediaURL];
//创建ALAssetsLibrary对象并将视频保存到媒体库
ALAssetsLibrary* assetsLibrary = [[ALAssetsLibrary alloc] init];
[assetsLibrary writeVideoAtPathToSavedPhotosAlbum:mediaURL completionBlock:^(NSURL *assetURL, NSError *error) {
if (!error) {
NSLog(@"captured video saved with no error.");
}else
{
NSLog(@"error occured while saving the video:%@", error);
}
}];
[assetsLibrary release];
}
[picker dismissModalViewControllerAnimated:YES];
}
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker{
[picker dismissModalViewControllerAnimated:YES];
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)viewDidUnload
{
[super viewDidUnload];
// Release any retained subviews of the main view.
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}
@end
相关推荐
UIImagePickerController是iOS平台上用于集成到应用中的一个核心组件,它允许用户通过拍照或从相册选择图片和视频。这个组件是苹果提供的UI框架的一部分,特别设计用于处理媒体输入,特别是对于那些需要用户交互来...
IOS UIImagePickerController从拍照、图库、相册获取图片 iOS 获取图片有三种方法: 1. 直接调用摄像头拍照 2. 从相册中选择 3. 从图库中选择 UIImagePickerController 是系统提供的用来获取图片和视频的接口; 用...
在iOS平台上,照相机与摄像机的使用是移动应用开发中的关键部分,特别是在构建与媒体交互的应用时。本文将深入探讨如何在iOS中利用这些功能,主要基于标题和描述提供的信息,我们将关注以下核心知识点: 1. **...
在iOS开发中,集成拍照和摄像功能是常见的需求,用户可以通过这些功能拍摄照片或录制视频,然后将其保存到设备的相册中。本教程将详细讲解如何实现这一过程,主要涉及的知识点包括: 1. **AVFoundation框架**:在...
这个“iOS 相册、摄像小demo”是一个典型的例子,它展示了如何使用苹果提供的UIKit框架中的UIImagePickerController来实现从系统相册选择图片或直接拍摄的功能。接下来,我们将深入探讨这个demo所涉及的核心知识点。...
- **UIImagePickerController**:与拍照类似,设置`UIImagePickerController`的`sourceType`属性为`UIImagePickerControllerSourceTypeCamera`,并通过`videoQuality`属性调整视频质量。 - **AVFoundation**:使用`...
在iOS开发中,自定义相机和访问相册是常见的需求,尤其在开发摄影类或社交类应用时。本文将深入探讨如何使用Swift语言实现这一功能,主要涉及的知识点包括: 1. **AVFoundation框架**:iOS中用于处理音频和视频的主...
在Unity3D开发中,有时候我们需要与iOS原生系统进行交互,例如访问用户的照片库,进行图片选择和编辑。这个场景通常涉及到Unity的插件开发和iOS的原生API调用。下面将详细讲解如何在Unity3D 2018.3.0版本中实现调用...
UIImagePickerController 这个类可以为大家提供照相的功能,以及图片,视频浏览的功能。 检查硬件是否安装有摄像头或者允许操作相册 代码如下: #pragma mark – 摄像头和相册相关的公共类 // 判断设备是否有摄像头 ...
如何使用Swift 2.0访问iOS相机该存储库的目的是用代码补充视频,并提供使用UIImagePickerController在iOS设备上拍照的简单起点。 “如何使用Swift 2.0访问iOS摄像机”视频演示了如何使用Swift 2.0拍摄iPhone / iPad...
在iOS开发中,图片的选择与处理是不可或缺的功能,尤其在社交、电商、摄影类应用中。本项目封装的工具库正是针对这一需求,提供了一套完整的解决方案,包括照片的多选单选、裁剪、涂抹以及拍照和图片浏览等功能。...
在Shutterbug中,你会学习如何使用UIImagePickerController来集成系统相机,让用户能够直接在应用内拍照。同时,还要了解如何使用UIImageView显示所拍的照片,并实现滑动浏览功能。 接下来,课程会介绍Core Image...
使用`UIImagePickerController`可以轻松地提供标准的拍照和从相册选择的界面,但如果你需要自定义界面,可以手动配置`AVCaptureSession`。 6. **权限管理**: 自iOS8开始,应用程序需要获取用户授权才能访问摄像头...