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> & ...
随机推荐
- mysql取出现在的时间戳和时间时间戳转成人类看得懂的时间
mysql取出现在的时间戳和时间时间戳转成人类看得懂的时间,我们在mysql里面他封装了一个内置的时间戳转化的函数,比如我们现在的时间戳是:1458536709 ,"%Y-%m-%d&quo ...
- ionic入门之AngularJS扩展基本布局
目录: 标题栏 : ion-header-bar 页脚栏 : ion-footer-bar header/footer : 样式及内容 内容区 : ion-content 滚动框 : ion-scro ...
- knockout之入门介绍
Knockout是一个轻量级的UI类库,通过应用MVVM模式使JavaScript的前端UI简单化.Knockout是一个以数据模型(data model)为基础的能够帮助你创建丰富文本,响应显示和编 ...
- 【secureCRT】永久设置背景色和文字颜色
- Android 常用工具类之LogUtil,可以定位到代码行,双击跳转
package cn.utils; import android.util.Log; public class LogUtils { public static boolean isDebug = t ...
- JS和CSS的多浏览器兼容(1)
1.指定文件在IE浏览器中的兼容性模式 要为你的网页指定文件模式,需要在你的网页中使用meta元素放入X-UA-Compatible http-equiv 标头.以下是指定为Emulate IE7 m ...
- Java局部变量final
局部变量和形参带final. 在一个线程A中开起另一个线程B,如果线程B要使用线程A的局部变量,那么A的局部变量需要定义成final.理由:局部变量是线程内部共享的,每一个线程内的不能访问其他线程的局 ...
- Mysql 如何做双机热备和负载均衡
MySQL数据库没有增量备份的机制,但它提供了一种主从备份的机制,就是把主数据库的所有的数据同时写到备份数据库中.实现MySQL数据库的热备份. 下面是具体的主从热备份的步骤:假设主服务器A(mast ...
- CI 配置验证规则
//判断表单域,提交表单显示对应的错误信息 $this->load->library('form_validation'); $config = array( ...
- Codeforces 735D:Taxes(哥德巴赫猜想)
http://codeforces.com/problemset/problem/735/D 题意:给出一个n,这个n可以分解成 n = n1 + n2 + -- + nk,其中k可以取任意数.要使得 ...