您的位置:首页 > 移动开发 > IOS开发

ios 通过调用系统摄像头拍照,拍视频,然后写入文件

2014-11-15 16:18 429 查看
如果您的App里需要获得由系统自带的照相机、摄像机和录音软件所生成的文件。可以借鉴以下代码来调用iPhone摄像头拍照或者摄像的功能,并把获得的数据直接写入到文件。

如果您的App里需要获得由系统自带的照相机、摄像机和录音软件所生成的文件。可以借鉴以下代码来调用iPhone摄像头拍照或者摄像的功能,并把获得的数据直接写入到文件。

//这一段是,点击一个takePicture按钮的操作.

01
-
(IBAction)takePicture:(id)sender{
02
03
UIImagePickerController
*picker=[[UIImagePickerControlleralloc]init];
04
05
if
([UIImagePickerController
isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]){
06
picker.sourceType
=UIImagePickerControllerSourceTypeCamera;
07
NSArray
*temp_MediaTypes=[UIImagePickerControlleravailableMediaTypesForSourceType:picker.sourceType];
08
picker.mediaTypes
=temp_MediaTypes;
09
picker.delegate
=self;
10
picker.allowsImageEditing
=YES;
11
}
12
13
[self
presentModalViewController:pickeranimated:YES];
14
[picker
release];
15
16
}
//下面两个函数是遵守UIImagePickerControllerDelegate这个协议所实现的类.这样就能够完整的实现,获取照片或者视频,然后写入文件的过程.

01
-
(
void
)imagePickerController:(UIImagePickerController
*)pickerdidFinishPickingMediaWithInfo:(NSDictionary*)info
02
{
03
04
NSString
*mediaType=[infoobjectForKey:UIImagePickerControllerMediaType];
05
06
BOOL
success;
07
NSFileManager
*fileManager=[NSFileManagerdefaultManager];
08
NSError
*error;
09
10
NSArray
*paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
11
NSString
*documentsDirectory=[pathsobjectAtIndex:0];
12
13
if
([mediaType
isEqualToString:@
"public.image"
]){
14
15
UIImage
*image=[infoobjectForKey:@
"UIImagePickerControllerEditedImage"
];
16
;
NSLog(@“foundanimage”);
17
18
NSString
*imageFile=[documentsDirectorystringByAppendingPathComponent:@
"temp.jpg"
];
19
;
NSLog(@“%@”,,imageFile);
20
21
success
=[fileManagerfileExistsAtPath:imageFile];
22
if
(success)
{
23
success
=[fileManagerremoveItemAtPath:imageFileerror:>error];
24
}
25
26
imageView.image
=image;
27
[UIImageJPEGRepresentation(image,
1.0f)writeToFile:imageFileatomically:YES];
28
29
//SETIMAGE(image);
30
//CFShow([[NSFileManager
defaultManager]directoryContentsAtPath:[NSHomeDirectory()stringByAppendingString:@"/Documents"]]);
31
;
}
32
else
if
([mediaType
isEqualToString:@
"public.movie"
]){
33
NSURL
*videoURL=[infoobjectForKey:UIImagePickerControllerMediaURL];
34
NSLog(@“%@”,
,videoURL);
35
NSLog(@“found
avideo”);
36
NSData
*videoData=[NSDatadataWithContentsOfURL:videoURL];
37
38
/****************************************/
39
40
NSString
*videoFile=[documentsDirectorystringByAppendingPathComponent:@
"temp.mov"
];
41
;
NSLog(@“%@”,,videoFile);
42
43
success
=[fileManagerfileExistsAtPath:videoFile];
44
if
(success)
{
45
success
=[fileManagerremoveItemAtPath:videoFileerror:>error];
46
}
47
[videoData
writeToFile:videoFileatomically:YES];
48
//CFShow([[NSFileManager
defaultManager]directoryContentsAtPath:[NSHomeDirectory()stringByAppendingString:@"/Documents"]]);
49
;
//NSLog(videoURL);
50
}
51
[picker
dismissModalViewControllerAnimated:YES];
52
}
53
54
-
(
void
)imagePickerControllerDidCancel:(UIImagePickerController
*)picker{
55
56
[picker
dismissModalViewControllerAnimated:YES];
57
58
}
转自http://www.oschina.net/question/54100_34016
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐