国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > iOS > 正文

IOS調用系統相機閃光燈的實例

2020-02-19 15:57:38
字體:
來源:轉載
供稿:網友

IOS有兩種的拍照和視頻的方式:

1.直接使用UIImagePickerController,這個類提供了一個簡單便捷的拍照與選擇圖片庫里圖片的功能。

2.另一種是通過AVFoundation.framework框架完全自定義拍照的界面和選擇圖片庫界面。我只做了第一種,就先給大家介紹第一種做法:

一、首先調用接口前,我們需要先判斷當前設備是否支持UIImagePickerController,用isSourceTypeAvailable:來判斷是否可用

二、查看符合的媒體類型,這個時候我們調用availableMediaTypeForSourceType:判斷

在調用UIImagePickerController時我們需要加入他的兩個代理方法:

UINavigationControllerDelegate和UIImagePickerControllerDelegate,在調用攝像頭的時候還可以調閃光燈,一會代碼里有。

要調用閃光燈需要先建一個AVCaptureSession類的實例對象:

?


//? Created by 張茫原 on 13-1-23.
//? Copyright (c) 2013年 張茫原. All rights reserved.
//
?
#import
//調用閃光燈調用框架
#import
?
@interface CameraViewController : UIViewController
{
??? AVCaptureSession * _AVSession;//調用閃光燈的時候創建的類
}
?
@property(nonatomic,retain)AVCaptureSession * AVSession;
?
@end

?

在.m的- (void)viewDidLoad里建立4Button,Camera調用相機、Library調用圖片庫、flashlight打開閃光燈、close關閉閃光燈,這里創建Button的代碼我就不再寫了。

?


//打開相機
-(void)addCarema
{
??? //判斷是否可以打開相機,模擬器此功能無法使用
??? if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
????????
??????? 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];
??? }
}

?

打開相機后,然后需要調用UIImagePickerControllerDelegate里的方法,拍攝完成后執行的方法和點擊Cancel之后執行的方法:

?


//拍攝完成后要執行的方法
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
??? //得到圖片
??? UIImage * image = [info objectForKey:UIImagePickerControllerOriginalImage];
??? //圖片存入相冊
??? UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);
??? [self dismissModalViewControllerAnimated:YES];
}
//點擊Cancel按鈕后執行方法
-(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
{
??? [self dismissModalViewControllerAnimated:YES];
}

?

調用相機照片和保存到圖片庫已經完成。

接著介紹打開照片庫:

?


-(void)openPicLibrary
{
??? //相冊是可以用模擬器打開的
??? if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) {
??????? UIImagePickerController * picker = [[UIImagePickerController alloc]init];
??????? picker.delegate = self;
??????? picker.allowsEditing = YES;//是否可以編輯
??????? //打開相冊選擇照片
??????? picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
??????? [self presentModalViewController:picker? animated:YES];
??????? [picker release];
??? }else{
??????? UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"你沒有攝像頭" delegate:nil cancelButtonTitle:@"Drat!" otherButtonTitles:nil];
??????? [alert show];
??? }
}
//選中圖片進入的代理方法
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo
{
??? [self dismissModalViewControllerAnimated:YES];
}

?

調用閃光燈的代碼,由于我也不是很理解,所以沒法加注釋,但是已經親測可用,但是調閃光燈時有一個算是bug吧,閃光燈會閑一下,然后再一直亮

?


-(void)openFlashlight
{
??? AVCaptureDevice * device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
??? if (device.torchMode == AVCaptureTorchModeOff) {
??????? //Create an AV session
??????? AVCaptureSession * session = [[AVCaptureSession alloc]init];
??????? // Create device input and add to current session
??????? AVCaptureDeviceInput * input = [AVCaptureDeviceInput deviceInputWithDevice:device error:nil];
??????? [session addInput:input];
??????? // Create video output and add to current session
??????? AVCaptureVideoDataOutput * output = [[AVCaptureVideoDataOutput alloc]init];
??????? [session addOutput:output];
??????? // Start session configuration
??????? [session beginConfiguration];
??????? [device lockForConfiguration:nil];
??????? // Set torch to on
??????? [device setTorchMode:AVCaptureTorchModeOn];
??????? [device unlockForConfiguration];
??????? [session commitConfiguration];
??????? // Start the session
??????? [session startRunning];
??????? // Keep the session around
??????? [self setAVSession:self.AVSession];
??????? [output release];
??? }
}
-(void)closeFlashlight
{
??? [self.AVSession stopRunning];
??? [self.AVSession release];
}

?

以上就是IOS調用系統相機閃光燈的實例,希望大家能夠喜歡,更多內容請繼續關注武林技術頻道網站!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 两当县| 孟州市| 都匀市| 会理县| 宁蒗| 忻城县| 朝阳区| 大化| 临沧市| 延川县| 留坝县| 花莲县| 德江县| 濉溪县| 井陉县| 茌平县| 津南区| 上饶县| 阳泉市| 乌兰浩特市| 酉阳| 遂川县| 射洪县| 定日县| 伊春市| 修水县| 巴东县| 夹江县| 清流县| 河源市| 石首市| 喜德县| 铜山县| 新闻| 云龙县| 信丰县| 临沭县| 贵州省| 绥江县| 志丹县| 桃源县|