takePic and Videos
2019獨角獸企業重金招聘Python工程師標準>>>
//
//? ViewController.m
//? UIImagePickerController
//? Created by Kenshin Cui on 14/04/05.
//? Copyright (c) 2014年 cmjstudio. All rights reserved.
//AVFoundation.framework
//MediaPlayer.framework
//MobileCoreSevices.framework
#import "ViewController.h"
#import <MobileCoreServices/MobileCoreServices.h>
#import <AVFoundation/AVFoundation.h>
@interface ViewController ()<UIImagePickerControllerDelegate,UINavigationControllerDelegate>
@property (assign,nonatomic) int isVideo;//是否錄制視頻,如果為1表示錄制視頻,0代表拍照
@property (strong,nonatomic) UIImagePickerController *imagePicker;
@property (weak, nonatomic) IBOutlet UIImageView *photo;//照片展示視圖
@property (strong ,nonatomic) AVPlayer *player;//播放器,用于錄制完視頻后播放視頻
@end
@implementation ViewController
#pragma mark - 控制器視圖事件
- (void)viewDidLoad {
??? [super viewDidLoad];
??? //通過這里設置時拍照還是錄制視頻
??? _isVideo=YES;
}
#pragma mark - UI事件
//點擊拍照按鈕
- (IBAction)takeClick:(UIButton *)sender {
??? [self presentViewController:self.imagePicker animated:YES completion:nil];
}
#pragma mark - UIImagePickerController代理方法
//完成
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{
??? NSString *mediaType=[info objectForKey:UIImagePickerControllerMediaType];
??? if ([mediaType isEqualToString:(NSString *)kUTTypeImage]) {//如果時拍照
??????? UIImage *image;
??????? //如果允許編輯則獲得編輯后的照片,否則獲取原始照片
??????? if (self.imagePicker.allowsEditing) {
??????????? image=[info objectForKey:UIImagePickerControllerEditedImage];//獲取編輯后的照片
??????? }else{
??????????? image=[info objectForKey:UIImagePickerControllerOriginalImage];//獲取原始照片
??????? }
??????? [self.photo setImage:image];//顯示照片
??????? UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);//保存到相簿
??? }else if([mediaType isEqualToString:(NSString *)kUTTypeMovie]){//如果是錄制視頻
??????? NSLog(@"video...");
??????? NSURL *url=[info objectForKey:UIImagePickerControllerMediaURL];//視頻路徑
??????? NSString *urlStr=[url path];
??????? if (UIVideoAtPathIsCompatibleWithSavedPhotosAlbum(urlStr)) {
??????????? //保存視頻到相簿,注意也可以使用ALAssetsLibrary來保存
??????????? UISaveVideoAtPathToSavedPhotosAlbum(urlStr, self, @selector(video:didFinishSavingWithError:contextInfo:), nil);//保存視頻到相簿
??????? }
?????? ?
??? }
??? [self dismissViewControllerAnimated:YES completion:nil];
}
-(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker{
??? NSLog(@"取消");
}
#pragma mark - 私有方法
-(UIImagePickerController *)imagePicker{
??? if (!_imagePicker) {
??????? _imagePicker=[[UIImagePickerController alloc]init];
??????? _imagePicker.sourceType=UIImagePickerControllerSourceTypeCamera;//設置image picker的來源,這里設置為攝像頭
??????? _imagePicker.cameraDevice=UIImagePickerControllerCameraDeviceRear;//設置使用哪個攝像頭,這里設置為后置攝像頭
??????? if (self.isVideo) {
??????????? _imagePicker.mediaTypes=@[(NSString *)kUTTypeMovie];
??????????? _imagePicker.videoQuality=UIImagePickerControllerQualityTypeIFrame1280x720;
??????????? _imagePicker.cameraCaptureMode=UIImagePickerControllerCameraCaptureModeVideo;//設置攝像頭模式(拍照,錄制視頻)
?????????? ?
??????? }else{
??????????? _imagePicker.cameraCaptureMode=UIImagePickerControllerCameraCaptureModePhoto;
??????? }
??????? _imagePicker.allowsEditing=YES;//允許編輯
??????? _imagePicker.delegate=self;//設置代理,檢測操作
??? }
??? return _imagePicker;
}
//視頻保存后的回調
- (void)video:(NSString *)videoPath didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo{
??? if (error) {
??????? NSLog(@"保存視頻過程中發生錯誤,錯誤信息:%@",error.localizedDescription);
??? }else{
??????? NSLog(@"視頻保存成功.");
??????? //錄制完之后自動播放
??????? NSURL *url=[NSURL fileURLWithPath:videoPath];
??????? _player=[AVPlayer playerWithURL:url];
??????? AVPlayerLayer *playerLayer=[AVPlayerLayer playerLayerWithPlayer:_player];
??????? playerLayer.frame=self.photo.frame;
??????? [self.photo.layer addSublayer:playerLayer];
??????? [_player play];
?????? ?
??? }
}
@end
轉載于:https://my.oschina.net/BurningOC/blog/523294
總結
以上是生活随笔為你收集整理的takePic and Videos的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦到大猫是什么意思
- 下一篇: uap--studio设置文本字体