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----32dedecms电影网评价星星功能的实现
我们要完成的是电影网的评价功能: 我们要做这个功能前,就要让前期工作准备好,首先让鼠标移动到星星时,星星的左边都是黄色的星星右边还是灰星星. 我们打开内容页的模版看下他代码是如何组成的: 我们在这里可 ...
- c 语言 结构体
一:结构体定义结构体类型变量 三种方式1st:先声明结构体类型,再定义该类型的变量struct student liming,zhangle;2nd:声明类型的同时定义变量struct student ...
- 五、Java基础---------if else、switch总结
在前几篇博客中主要是以笔者遇到的一些典型的题目为例子而展开的讨论,接下来几篇将是以知识点的结构进行讲述.本文主要是讲述if ()else .if() else if().switch() case 的 ...
- C++之: CDib类
头文件Cdib.h 源文件Cdib.cpp
- linux死锁检测的一种思路【转】
转自:http://www.cnblogs.com/mumuxinfei/p/4365697.html 前言: 上一篇博文讲述了pstack的使用和原理. 和jstack一样, pstack能获取进 ...
- webApi FileReader
https://developer.mozilla.org/en-US/docs/Web/API/FileReader https://github.com/node-file-api/FileRea ...
- 【jQuery UI 1.8 The User Interface Library for jQuery】.学习笔记.6.Dialog控件
习惯上,我们播放一条简短的信息,或向浏览者询问一个问题,都会用到dialog. 创建一个基本的dialog 使用dialog 选项 形式 启用内置动画 给dialog添加按钮 使用dialog回调函数 ...
- WordPress博客系统搜索引擎优化seo全攻略方法
WordPress的文章.评论等很多数据都是存放在数据库的,所以搭建wordpress网站的时间,网站的空间不需要多大,而数据库一定要充足,而在WordPress数据库中主要使用 wp_posts 表 ...
- 12、Jsp加强/自定义标签/JavaBean
1 Jsp加强回顾 Jsp加强 1)Jsp的9大内置对象 request HttpServletRequet response HttpServletResponse config ...
- python: html
1. 三把利剑(html css js) css(颜色 位置) js (动) 2. 标签的分类:块级标签和行内标签 块级标签(div h p) 行内标签(span) 3. 标签存在的意义:为了方便操作 ...