ios照片获取,拍照功能
- //
- // HYBPhotoPickerManager.h
- // ehui
- //
- // Created by 黄仪标 on 14/11/26.
- // Copyright (c) 2014年 黄仪标. All rights reserved.
- //
- #import <Foundation/Foundation.h>
- /*!
- * @brief 照片获取或者拍照功能管理器
- * @author huangyibiao
- */
- @interface HYBPhotoPickerManager : NSObject
- + (HYBPhotoPickerManager *)shared;
- /*!
- * @brief 选择图片或者拍照完成选择使用拍照的图片后,会调用此block
- * @param image 选择的图片或者拍照后选择使用的图片
- */
- typedef void (^HYBPickerCompelitionBlock)(UIImage *image);
- /*!
- * @brief 用户点击取消时的回调block
- */
- typedef void (^HYBPickerCancelBlock)();
- /*!
- * @brief 此方法为调起选择图片或者拍照的入口,当选择图片或者拍照后选择使用图片后,回调completion,
- * 当用户点击取消后,回调cancelBlock
- * @param inView UIActionSheet呈现到inView这个视图上
- * @param fromController 用于呈现UIImagePickerController的控制器
- * @param completion 当选择图片或者拍照后选择使用图片后,回调completion
- * @param cancelBlock 当用户点击取消后,回调cancelBlock
- */
- - (void)showActionSheetInView:(UIView *)inView
- fromController:(UIViewController *)fromController
- completion:(HYBPickerCompelitionBlock)completion
- cancelBlock:(HYBPickerCancelBlock)cancelBlock;
- @end
- //
- // HYBPhotoPickerManager.m
- // ehui
- //
- // Created by 黄仪标 on 14/11/26.
- // Copyright (c) 2014年 黄仪标. All rights reserved.
- //
- #import "HYBPhotoPickerManager.h"
- #import "UIImagePickerController+Photo.h"
- #import "UIImage+DSResizeAndRound.h"
- @interface HYBPhotoPickerManager () <UIImagePickerControllerDelegate,
- UINavigationControllerDelegate,
- UIActionSheetDelegate>
- @property (nonatomic, weak) UIViewController *fromController;
- @property (nonatomic, copy) HYBPickerCompelitionBlock completion;
- @property (nonatomic, copy) HYBPickerCancelBlock cancelBlock;
- @end
- @implementation HYBPhotoPickerManager
- + (HYBPhotoPickerManager *)shared {
- static HYBPhotoPickerManager *sharedObject = nil;
- static dispatch_once_t onceToken;
- dispatch_once(&onceToken, ^{
- if (!sharedObject) {
- sharedObject = [[[self class] alloc] init];
- }
- });
- return sharedObject;
- }
- - (void)showActionSheetInView:(UIView *)inView
- fromController:(UIViewController *)fromController
- completion:(HYBPickerCompelitionBlock)completion
- cancelBlock:(HYBPickerCancelBlock)cancelBlock {
- self.completion = [completion copy];
- self.cancelBlock = [cancelBlock copy];
- self.fromController = fromController;
- dispatch_async(kGlobalThread, ^{
- UIActionSheet *actionSheet = nil;
- if ([UIImagePickerController isCameraAvailable]) {
- actionSheet = [[UIActionSheet alloc] initWithTitle:nil
- delegate:(id<UIActionSheetDelegate>)self
- cancelButtonTitle:@"取消"
- destructiveButtonTitle:nil
- otherButtonTitles:@"从相册选择", @"拍照上传", nil nil];
- } else {
- actionSheet = [[UIActionSheet alloc] initWithTitle:nil
- delegate:(id<UIActionSheetDelegate>)self
- cancelButtonTitle:@"取消"
- destructiveButtonTitle:nil
- otherButtonTitles:@"从相册选择", nil nil];
- }
- dispatch_async(kMainThread, ^{
- [actionSheet showInView:inView];
- });
- });
- return;
- }
- #pragma mark - UIActionSheetDelegate
- - (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
- if (buttonIndex == 0) { // 从相册选择
- if ([UIImagePickerController isPhotoLibraryAvailable]) {
- UIImagePickerController *picker = [[UIImagePickerController alloc] init];
- picker.delegate = self;
- picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
- picker.mediaTypes = [UIImagePickerController availableMediaTypesForSourceType:picker.sourceType];
- if (kIsIOS7OrLater) {
- picker.navigationBar.barTintColor = self.fromController.navigationController.navigationBar.barTintColor;
- }
- // 设置导航默认标题的颜色及字体大小
- picker.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName: [UIColor whiteColor],
- NSFontAttributeName : [UIFont boldSystemFontOfSize:18]};
- [self.fromController presentViewController:picker animated:YES completion:nil];
- }
- } else if (buttonIndex == 1) { // 拍照
- if ([UIImagePickerController canTakePhoto]) {
- UIImagePickerController *picker = [[UIImagePickerController alloc] init];
- picker.delegate = self;
- picker.sourceType = UIImagePickerControllerSourceTypeCamera;
- picker.delegate = self;
- if (kIsIOS7OrLater) {
- picker.navigationBar.barTintColor = self.fromController.navigationController.navigationBar.barTintColor;
- }
- // 设置导航默认标题的颜色及字体大小
- picker.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName: [UIColor whiteColor],
- NSFontAttributeName : [UIFont boldSystemFontOfSize:18]};
- [self.fromController presentViewController:picker animated:YES completion:nil];
- }
- }
- return;
- }
- #pragma mark - UIImagePickerControllerDelegate
- // 选择了图片或者拍照了
- - (void)imagePickerController:(UIImagePickerController *)aPicker didFinishPickingMediaWithInfo:(NSDictionary *)info {
- [aPicker dismissViewControllerAnimated:YES completion:nil];
- __block UIImage *image = [info valueForKey:UIImagePickerControllerOriginalImage];
- if (image && self.completion) {
- [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
- [self.fromController setNeedsStatusBarAppearanceUpdate];
- dispatch_async(kGlobalThread, ^{
- image = [image imageResizedToSize:CGSizeMake(kScreenWidth / 2.0, kScreenHeight / 2.0)];
- DDLogVerbose(@"image size : %@", NSStringFromCGSize(image.size));
- dispatch_async(kMainThread, ^{
- self.completion(image);
- });
- });
- }
- return;
- }
- // 取消
- - (void)imagePickerControllerDidCancel:(UIImagePickerController *)aPicker {
- [aPicker dismissViewControllerAnimated:YES completion:nil];
- if (self.cancelBlock) {
- [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
- [self.fromController setNeedsStatusBarAppearanceUpdate];
- self.cancelBlock();
- }
- return;
- }
- @end
ios照片获取,拍照功能的更多相关文章
- 文件件监听器,android系统拍照功能调用后删除系统生成的照片
先说说要实现的功能: android调用系统拍照功能实时 预览 删除 上传 保存 (用户不能再本地文件夹中看到拍的照片) 再说说遇到的问题: 1.调用系统拍照在系统自带的拍照文件夹中生成一张随机命名图 ...
- Cocos2d-x使用android拍照功能加载照片内存过大,通过另存照片尺寸大小解决
使用2dx调用android拍照功能,拍照结束后在2dx界面显示拍照照片,如果不对照片做处理,会出现内存过大的问题,导致程序崩溃,如果仅仅另存拍照照片,则照片质量大小均下降,导致照片不够清晰,后来发现 ...
- Android Camera开发系列(上)——Camera的基本调用与实现拍照功能以及获取拍照图片加载大图片
Android Camera开发系列(上)--Camera的基本调用与实现拍照功能以及获取拍照图片加载大图片 最近也是在搞个破相机,兼容性那叫一个不忍直视啊,于是自己翻阅了一些基本的资料,自己实现了一 ...
- iOS开源项目MobileProject功能点介绍
一:MobileProject简介 MobileProject项目是一个以MVC模式搭建的开源功能集合,基于Objective-C上面进行编写,意在解决新项目对于常见功能模块的重复开发,MobileP ...
- Android--启动拍照功能并返回结果
因为没有深入学习拍照这块功能,所以只是简单的调用了一下系统的拍照功能,下面代码: //拍照的方法 private void openTakePhoto(){ /** * 在启动拍照之前最好先判断一下s ...
- Java乔晓松-android中调用系统拍照功能并显示拍照的图片
android中调用系统拍照功能并显示拍照的图片 如果你是拍照完,利用onActivityResult获取data数据,把data数据转换成Bitmap数据,这样获取到的图片,是拍照的照片的缩略图 代 ...
- Android使得手机拍照功能的发展(源共享)
Android系统调用手机拍照功能有两种方法来直接调用手机自带摄像头还有一个就是要当心自己的节拍. 例Camera360 强大的一个在每个操作系统都有一个手机摄影软件:您可以捕捉不同风格,不同特效的照 ...
- 微信小程序(有始有终,全部代码)开发--- 新增模块: 图片选取以及拍照功能
开篇语 前几天发了一篇: <简年15: 微信小程序(有始有终,全部代码)开发---跑步App+音乐播放器 > 后来又发了BUG修复的版本: 简年18: 微信小程序(有始有终,全部代码)开发 ...
- 移动端js调取手机相册和拍照功能
前端可以通过js调取手机的相册和拍照功能,但不能拍视频!!! <!DOCTYPE html> <html lang="en"> <head> & ...
随机推荐
- 夺命雷公狗---DEDECMS----13dedecms首页的完成
我们的dedecms搭建起来后直接复制templets的目录复制一份,如下所示: 然后进入templets目录里面,然后再将default里面的东西都给干掉,然后将我们预先准备好的首页放进来,代码如下 ...
- [php] How to debug PHP in the terminal
Here I use Netbeans, xdebug to debug the PHP in the terminal of Ubuntu. 1. you have to install the x ...
- Windows应用层网络模块扫盲
说到Windows应用层网络通信不得不提winsock,winsock是工作在TCP/IP层的应用层(TCP/IP层分为主机到网络层[比特].网络互联层[数据帧].传输层[数据包].应用 ...
- hadoop之输入输出格式
<STRONG>jobConf.setInputFormat(MyInputFormat. class ); InputFormat:</STRONG> TextInputFo ...
- [置顶] 1D1D动规优化初步
例题一: 货物运输,大意: 给出N个点的坐标与需要你送过去的钱数(第一个点不需要钱),身上带钱的数目有最大值,由初始在的1点,按顺序经历每个点(中途可以回1点,回去钱就满了),问最小走的路程是多少(最 ...
- sql多表查询(out join,inner join, left join, right join)
left join以左表为基准显示所有左表的信息,在on中有符合条件的其他表也显示出来 right join则相反 inner join的只显示on中符合条件的 1 使用多个表格 在「world」资料 ...
- PL/SQL快捷键
F8 执行所选中的SQL语句 当光标在sql语句末尾/开头 时 按Shift Home /Shift End 选中该语句
- linux设备驱动归纳总结(六):1.中断的实现【转】
本文转载自:http://blog.chinaunix.net/uid-25014876-id-90740.html linux设备驱动归纳总结(六):1.中断的实现 xxxxxxxxxxxxxxxx ...
- PHP过滤评论关键词
<?php /** * PHP中屏蔽过滤指定关键字实现方法总结 * http://www.111cn.net/phper/phpanqn/46225.htm * * 思路: * 一.把关键字专门 ...
- 在lua的string库和正则表达式
一.前提要了解一下lua 的string几个方法 1. string库中所有的字符索引从前往后是1,2,...;从后往前是-1,-2,... 2. string库中所有的function都不会直接操作 ...