您现在的位置是:主页 > news > 今日新闻头条内容/英文关键词seo

今日新闻头条内容/英文关键词seo

admin2025/5/3 22:31:48news

简介今日新闻头条内容,英文关键词seo,网站制作员,青岛做网站优化的公司很多应用中我门需要用到iOS设备的摄像头进行拍照,视频等,并且从相册中选取我们需要的图片或者视频。这时就可以使用UIImagePickerController类来完成控制。一、UIImagePickerController类UIImagePickerController 这个类可以为大家提供照相的功能,以及图…

今日新闻头条内容,英文关键词seo,网站制作员,青岛做网站优化的公司很多应用中我门需要用到iOS设备的摄像头进行拍照,视频等,并且从相册中选取我们需要的图片或者视频。这时就可以使用UIImagePickerController类来完成控制。一、UIImagePickerController类UIImagePickerController 这个类可以为大家提供照相的功能,以及图…

很多应用中我门需要用到iOS设备的摄像头进行拍照,视频等,并且从相册中选取我们需要的图片或者视频。这时就可以使用UIImagePickerController类来完成控制。


一、UIImagePickerController类

UIImagePickerController 这个类可以为大家提供照相的功能,以及图片,视频浏览的功能。

二、检查硬件是否安装有摄像头或者允许操作相册

1、 判断摄像头是否可用

(1) 判断设备是否有摄像头

- (BOOL) isCameraAvailable{return [UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera];
}

(2) 前面的摄像头是否可用

- (BOOL) isFrontCameraAvailable{return [UIImagePickerController isCameraDeviceAvailable:UIImagePickerControllerCameraDeviceFront];
}

(3) 后面的摄像头是否可用

- (BOOL) isRearCameraAvailable{return [UIImagePickerController isCameraDeviceAvailable:UIImagePickerControllerCameraDeviceRear];
}
2、 判断支持的媒体类型
// 判断是否支持某种多媒体类型:拍照,视频,
-(BOOL)cameraSupportsMedia:(NSString*)paramMediaType sourceType:(UIImagePickerControllerSourceType)paramSourceType{__block BOOL result=NO;if ([paramMediaType length]==0) {NSLog(@"Media type is empty.");return NO;}NSArray*availableMediaTypes=[UIImagePickerController availableMediaTypesForSourceType:paramSourceType];[availableMediaTypes enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {NSString *mediaType = (NSString *)obj;if ([mediaType isEqualToString:paramMediaType]){result = YES;*stop= YES;}}];return result;
}

(1) 检查摄像头是否支持录像

- (BOOL) doesCameraSupportShootingVideos{/*在此处注意我们要将MobileCoreServices 框架添加到项目中,然后将其导入:#import <MobileCoreServices/MobileCoreServices.h> 。不然后出现错误使用未声明的标识符 'kUTTypeMovie'*/return [self cameraSupportsMedia:( NSString *)kUTTypeMovie sourceType:UIImagePickerControllerSourceTypeCamera];
}

(2)检查摄像头是否支持拍照

-(BOOL) doesCameraSupportTakingPhotos{/*在此处注意我们要将MobileCoreServices 框架添加到项目中,然后将其导入:#import <MobileCoreServices/MobileCoreServices.h> 。不然后出现错误使用未声明的标识符 'kUTTypeImage'*/return [self cameraSupportsMedia:( NSString *)kUTTypeImage sourceType:UIImagePickerControllerSourceTypeCamera];
}
3、相册文件选取相关

(1)相册是否可用

-(BOOL) isPhotoLibraryAvailable{return [UIImagePickerController isSourceTypeAvailable: UIImagePickerControllerSourceTypePhotoLibrary];
}

(2) 是否可以在相册中选择视频

- (BOOL) canUserPickVideosFromPhotoLibrary{return [self cameraSupportsMedia:( NSString *)kUTTypeMovie sourceType:UIImagePickerControllerSourceTypePhotoLibrary];
}

(3)是否可以在相册中选择照片

- (BOOL) canUserPickPhotosFromPhotoLibrary{return [self cameraSupportsMedia:( NSString *)kUTTypeImage sourceType:UIImagePickerControllerSourceTypePhotoLibrary];
}

三、用摄像头进行拍照和录像功能

1、假设我门点击一个按钮调用摄像头进行拍照和录像功能

- (void)ClickControlAction:(id)sender{// 判断有摄像头,并且支持拍照功能if ([self isCameraAvailable] && [self doesCameraSupportTakingPhotos]){// 初始化图片选择控制器UIImagePickerController *controller = [[UIImagePickerController alloc] init];/*设置媒体来源,即调用出来的UIImagePickerController所显示出来的界面,有一下三种来源typedef NS_ENUM(NSInteger, UIImagePickerControllerSourceType) {UIImagePickerControllerSourceTypePhotoLibrary,UIImagePickerControllerSourceTypeCamera,UIImagePickerControllerSourceTypeSavedPhotosAlbum};分别表示:图片列表,摄像头,相机相册*/[controller setSourceType:UIImagePickerControllerSourceTypeCamera];// 设置所支持的媒体功能,即只能拍照,或则只能录像,或者两者都可以NSString *requiredMediaType = ( NSString *)kUTTypeImage;NSString *requiredMediaType1 = ( NSString *)kUTTypeMovie;NSArray *arrMediaTypes=[NSArray arrayWithObjects:requiredMediaType, requiredMediaType1,nil];[controller setMediaTypes:arrMediaTypes];// 设置录制视频的质量[controller setVideoQuality:UIImagePickerControllerQualityTypeHigh];//设置最长摄像时间[controller setVideoMaximumDuration:10.f];// 设置是否可以管理已经存在的图片或者视频[controller setAllowsEditing:YES];// 设置代理[controller setDelegate:self];[self presentViewController:controller animated:YES completion:nil];}else {NSLog(@"Camera is not available.");}
}

2、保存成功之后,调用相关代理方法

// 保存图片后到相册后,调用的相关方法,查看是否保存成功
- (void) imageWasSavedSuccessfully:(UIImage *)paramImage didFinishSavingWithError:(NSError *)paramError contextInfo:(void *)paramContextInfo{if (paramError == nil){NSLog(@"Image was saved successfully.");} else {NSLog(@"An error happened while saving the image.");NSLog(@"Error = %@", paramError);}
}
// 当得到照片或者视频后,调用该方法
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{NSLog(@"Picker returned successfully.");NSLog(@"%@", info);NSString *mediaType = [info objectForKey:UIImagePickerControllerMediaType];// 判断获取类型:图片if ([mediaType isEqualToString:( NSString *)kUTTypeImage]){UIImage *theImage = nil;// 判断,图片是否允许修改if ([picker allowsEditing]){//获取用户编辑之后的图像theImage = [info objectForKey:UIImagePickerControllerEditedImage];} else {// 照片的原数据theImage = [info objectForKey:UIImagePickerControllerOriginalImage];}// 保存图片到相册中SEL selectorToCall = @selector(imageWasSavedSuccessfully:didFinishSavingWithError:contextInfo:);UIImageWriteToSavedPhotosAlbum(theImage, self,selectorToCall, NULL);}else if ([mediaType isEqualToString:(NSString *)kUTTypeMovie]){// 判断获取类型:视频//获取视频文件的urlNSURL* mediaURL = [info objectForKey:UIImagePickerControllerMediaURL];//创建ALAssetsLibrary对象并将视频保存到媒体库// Assets Library 框架包是提供了在应用程序中操作图片和视频的相关功能。相当于一个桥梁,链接了应用程序和多媒体文件。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);}}];}[picker  dismissViewControllerAnimated:YES completion:nil];
}
// 当用户取消时,调用该方法
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker{[picker  dismissViewControllerAnimated:YES completion:nil];
}

四、从相册获取图片和视频数据

- (void)ClickShowPhotoAction:(id)sender{if ([self isPhotoLibraryAvailable]){UIImagePickerController *controller = [[UIImagePickerController alloc] init];[controller setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];// 设置类型NSMutableArray *mediaTypes = [[NSMutableArray alloc] init];if ([self canUserPickPhotosFromPhotoLibrary]){[mediaTypes addObject:( NSString *)kUTTypeImage];}if ([self canUserPickVideosFromPhotoLibrary]){[mediaTypes addObject:( NSString *)kUTTypeMovie];}[controller setMediaTypes:mediaTypes];[controller setDelegate:self];// 设置代理[self.navigationController presentViewController:controller animated:YES completion:nil];}
}


作者:南弦之
链接:https://www.jianshu.com/p/097ed620cc38
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。