UIImagePickerController拍照与摄像
该类继承自UINavigationController类
//
// 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 = [infoobjectForKey:UIImagePickerControllerMediaURL];
//创建ALAssetsLibrary对象并将视频保存到媒体库
ALAssetsLibrary* assetsLibrary = [[ALAssetsLibrary alloc]init];
[assetsLibrary writeVideoAtPathToSavedPhotosAlbum:mediaURLcompletionBlock:^(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
转载于:https://www.cnblogs.com/yjg2014/p/4280898.html
UIImagePickerController拍照与摄像相关推荐
- Android--调用系统照相机拍照与摄像
https://www.cnblogs.com/plokmju/p/Android_SystemCamera.html 前言 在很多场景中,都需要用到摄像头去拍摄照片或视频,在照片或视频的基础之上进行 ...
- HTML5+JavaScript调用摄像头拍照或者摄像
调用摄像头拍照或者摄像有多种方法,之前介绍过两种: HTML5 <input type="file">标签直接调用:https://blog.csdn.net/qq_2 ...
- h5前端调用android拍照功能,H5调用Android拍照和摄像以及选取相册
之前一直认为H5调用Android,H5不需要Android配合能直接实现功能.前段时间,自己做这个功能,才发现不是这么回事. H5编写 html文件里只需要标签即可实现代码,代码如下所示: 拍照 ο ...
- 微信小程序摄像头监控_微信小程序拍照和摄像功能实现方法示例
本文实例讲述了微信小程序拍照和摄像功能实现方法.分享给大家供大家参考,具体如下: 拍照 原先的想法是使用微信的camera组件来实现,并且模拟发朋友圈的样子来进行相机的设置,其实就是将camera组件 ...
- 调用Camera API实现自己的拍照和摄像程序
参考博客: http://www.cnblogs.com/franksunny/archive/2011/11/17/2252926.html 根据Camera API实现自己的拍照和摄像程序 通过上 ...
- 微信小程序拍照和摄像功能实现方法示例
微信小程序拍照和摄像功能实现方法示例:本文实例讲述了微信小程序拍照和摄像功能实现方法.分享给大家供大家参考,具体如下: 微信小程序拍照功能实现逻辑和实例代码: 原先的想法是使用微信的camera组件来 ...
- 摄像头 UIImagePickerController拍照和视频录制
下面看一下在iOS如何拍照和录制视频.在iOS中要拍照和录制视频最简单的方法就是使用UIImagePickerController.UIImagePickerController继承于UINaviga ...
- Android初级教程调用手机拍照与摄像功能
这个小案例建议在手机上运行. package com.example.camera;import java.io.File;import android.net.Uri; import android ...
- 从0开始认识android(六):启动系统相机拍照、摄像的Intent
1.启动系统相机 1.1.只是简单的获取所拍照片的缩略图 启动相机 static final int REQUEST_IMAGE_CAPTURE = 1;private void dispatchTa ...
最新文章
- 机器学习(7)--VC维数
- css3 奇技淫巧 - 如何给小汽车换个背景色谈起
- 进入正在运行的Docker容器的4种方式
- kotlin集合操作符——元素操作符
- 更换密码之后连不上数据库
- 20172318 2018-2019-1 《程序设计与数据结构》第9周学习总结
- 数据隔离、访问授权,用好大数据为什么这么难?
- Persistent Data Structures(可持久化的数据结构)
- Hadoop之MapReduce理论篇01
- makefile中的notdir,wildcard和patsubst
- 编译器的自举及实现过程
- 人性化的绘画界面设计-屁民科普
- 电脑设置定时关机的5种方法
- 计算机开机会跳过自检嘛,开机怎么样跳过主板自检 电脑开机不自检
- CSS - id选择器 和 类选择器
- 熬夜整理Java面试笔试题,你还看不懂吗?
- Tagtraum.Industries.beaTunes.v3.5.7.Incl.Keygen-NOY
- python 播放本地音乐_python本地音乐播放器
- Android 设置投影效果
- VC窗口自由的调整大小的实现
热门文章
- 【系统】windows2003 至少有一个服务或驱动程序无法加载或错误
- python语法基础题你好_Python基础要打牢,先学会基本语法
- 简述java对象的封装特点_简述Java面向对象三大特征:封装、继承、多态
- SpringMVC之@RequestMapping注解及其衍生注解详解
- linux中eclipse不运行,linux下启动不了eclipse
- .net mysql操作类_ASP.NET数据库操作类实例
- CSITOOL安装接收CSI数据
- sql实现从两个表获取字段组成表数据再插入到函数表中
- xamarin.android 控件,将Android View作为自定义控件集成到Xamarin.Forms
- 量子计算计算机简史pdf,量子计算及其潜在应用.pdf