今天給大家分享一下如何調(diào)用iphone的拍照功能和打開閃光燈,有些代碼我也不太理解,很多是在網(wǎng)上借鑒其他人的。
IOS有兩種的拍照和視頻的方式:
1.直接使用UIImagePickerController,這個類提供了一個簡單便捷的拍照與選擇圖片庫里圖片的功能。
2.另一種是通過AVFoundation.framework框架完全自定義拍照的界面和選擇圖片庫界面。我只做了第一種,就先給大家介紹第一種做法:
一、首先調(diào)用接口前,我們需要先判斷當(dāng)前設(shè)備是否支持UIImagePickerController,用isSourceTypeAvailable:來判斷是否可用
二、查看符合的媒體類型,這個時候我們調(diào)用availableMediaTypeForSourceType:判斷
在調(diào)用UIImagePickerController時我們需要加入他的兩個代理方法:
UINavigationControllerDelegate和UIImagePickerControllerDelegate,在調(diào)用攝像頭的時候還可以調(diào)閃光燈,一會代碼里有。
要調(diào)用閃光燈需要先建一個AVCaptureSession類的實例對象:
代碼如下:
// Created by 張茫原 on 13-1-23.
// Copyright (c) 2013年 張茫原. All rights reserved.
//
#import
//調(diào)用閃光燈調(diào)用框架
#import
@interface CameraViewController : UIViewController
{
AVCaptureSession * _AVSession;//調(diào)用閃光燈的時候創(chuàng)建的類
}
@property(nonatomic,retain)AVCaptureSession * AVSession;
@end
在.m的- (void)viewDidLoad里建立4Button,Camera調(diào)用相機、Library調(diào)用圖片庫、flashlight打開閃光燈、close關(guān)閉閃光燈,這里創(chuàng)建Button的代碼我就不再寫了。
代碼如下:
//打開相機
-(void)addCarema
{
//判斷是否可以打開相機,模擬器此功能無法使用
if ([UIImagePickerController isSourceTypeAvailable:UIIm
UIImagePickerController * picker = [[UIImagePickerController alloc]init];
picker.delegate = self;
picker.allowsEditing = YES; //是否可編輯
//攝像頭
picker.sourceType = UIImagePickerControllerSourceTypeCamera;
[self presentModalViewController:picker animated:YES];
[picker release];
}else{
//如果沒有提示用戶
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"你沒有攝像頭" delegate:nil cancelButtonTitle:@"Drat!" otherButtonTitles:nil];
[alert show];
}
}
打開相機后,然后需要調(diào)用UIImagePickerControllerDelegate里的方法,拍攝完成后執(zhí)行的方法和點擊Cancel之后執(zhí)行的方法:
代碼如下:
//拍攝完成后要執(zhí)行的方法
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
//得到圖片
UIImage * image = [info objectForKey:UIImagePickerControllerOriginalImage];
//圖片存入相冊
UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);
新聞熱點
疑難解答
圖片精選