iOS从相册选择图片并裁剪

前言

笔者最近接了一个任务,是从手机相册选择图片并裁剪后上传。于是在裁剪的这一块,我用了VPImageCropper。从相册获取图片,我一开始看的是TZImagePickerController。两个直接使用在一起发现,样式上不是我想要的。于是就参考着TZImagePickerController的源码,实现了该功能。

实现步骤

一、获取相册列表

获取相册这里,我参考了TZImagePickerController的源码,获取相册列表,相机内容。在这里有三个主要的类:

  • ImagePickerController, 导航控制器的子类,由于相册选择的页面是modal出来的,为了方便push,pop,弄了这个导航控制器
  • PhotoPickerController,UICollectionViewController的子类,用于显示相册的图片
  • AlbumPickerController,UITableviewController的子类,用于
    显示相册列表

还有一个工具类ImageManager,关于图片的一些操作可以通过这个类进行获取,属性以及方法如下:

#import <UIKit/UIKit.h>
@class AlbumModel;
@class PHAsset;
@interface ImageManager : NSObject
///相册模型数组
@property (nonatomic, strong) NSArray<AlbumModel *> *albumModelArray;
///相机胶卷相册模型
@property (nonatomic, strong) AlbumModel *cameraRollAlbumModel;
+ (instancetype)sharedManager;
///获得原始图片
- (UIImage *)getOriginalImageWithAsset:(PHAsset *)asset;
///用户是否授权获取图片
- (BOOL)authorizationStatusAuthorized;

笔者将模型数组存储在单例对象中,有个好处就是只需获取一次相册。坏处就是不能实时更新相册里的内容,所以大家自己权衡吧。

二、裁剪

在裁剪这里,我使用了VPImageCropper第三方框架。具体使用方法,点我。如果大家想自定义裁剪的边框和样式,可以自行修改源码,这个框架代码量还是很少的。

三、注意

该项目只适用于iOS8。因为在获取相册的时候,我适用了Photos这个框架,这个框架是iOS8后才能获取的。在此之前使用的是ALAssetsLibrary,iOS9后已过期。

四、下载地址

说了这么多,大家还是从github上,直接下我的demo看看吧。下载地址

iOS从相册选择图片并裁剪,可用于上传头像相关推荐

  1. html5头像裁剪,移动端 上传头像 并裁剪功能(h5)

    移动端头像图片上传裁剪 }.button-info{color:#fff;background-color:#2db7f5;border-color:#2db7f5; }.avatarbox{widt ...

  2. iOS 开发者账号添加新的管理成员用于上传APP

    由于之前申请app账号的同事离职了,每次用之前的账号上传app如果出现错误不能接收到 错误邮件,重新添加一个管理员用以上传app用. 1.申请一个APPID 账号 2.登录开发者账号,在people中 ...

  3. 图片裁剪和异步上传插件--一步到位(记录)

    图片上传裁剪这功能随处可见,有的自己写,不过太耗费时间了,插件的话感觉好多,前段时间就想挑一款好的插件,以后就用那款,可是挑了几款插件用上去,效果很好,问题就出在合并了,单一的插件效果是很好的,没问题 ...

  4. 【iOS开发】相册选择图片识别条形码

    [iOS开发]相册选择图片识别条形码 原生识别条形码 VNDetectBarcodesRequest 只要iOS11.0+以上支持,支持iOS11.0-以下请使用其他方案 // Create a ba ...

  5. IOS研究院之打开照相机与本地相册选择图片

    如下图所示 在本地相册中选择一张图片后,我们将他拷贝至沙盒当中,在客户端中将它的缩略图放在按钮旁边,这个结构其实和新浪微薄中选择图片后的效果一样.最终点击发送将按钮将图片2进制图片上传服务器. 下面我 ...

  6. iOS上传头像, 相册权限,相册权限,拍照上传,相册选择图片,拍照页面语言设置,保存到相册...

    2019独角兽企业重金招聘Python工程师标准>>> 1. 权限 在打开相机拍照或者打开相册选择图片之前, 有必要先判断先是否有权限, 如果没有权限应该给个提示, 让用户自己去设置 ...

  7. iOS打开照相机与本地相册选择图片

    最近正好项目里面要集成"打开照相机与本地相册选择图片"的功能,今天就在这边给大家写一个演示程序:打开相机拍摄后或者在相册中选择一张照片,然后将它显示在界面上.好了废话不多说,因为比 ...

  8. iOS 打开照相机与本地相册选择图片

    最近正好项目里面要集成"打开照相机与本地相册选择图片"的功能,今天就在这边给大家写一个演示程序:打开相机拍摄后或者在相册中选择一张照片,然后将它显示在界面上.好了废话不多说,因为比 ...

  9. android裁剪图片功能,Android实现拍照、选择图片并裁剪图片功能

    一. 实现拍照.选择图片并裁剪图片效果 按照之前博客的风格,首先看下实现效果. 二. uCrop项目应用 想起之前看到的Yalantis/uCrop效果比较绚,但是研究源码之后发现在定制界面方面还是有 ...

最新文章

  1. 【Vue】谈Vue的依赖追踪系统 ——搞懂methods watch和compute的区别和联系
  2. python导出数据找不到csv_找不到Python/CSV文件
  3. Maven依赖管理和插件配置
  4. centos8安装文件服务器,centos8 服务器环境部署
  5. Chromium版Edge体验——几个理由告诉你为什么卸载Chrome!
  6. windows cab文件安装
  7. 第三次大作业-作业准备
  8. java常见的gc回收器_一篇文章让你了解GC垃圾回收器
  9. 找出Java进程中大量消耗CPU
  10. c# vs2005 多线程中调用窗体控件 (摘)
  11. 91位图和bigemap大地图的区别
  12. 医院远程会诊管理系统方案/案列/软件/APP/小程序/网站
  13. 支持USB Video Class的摄像头
  14. 产品经理入职四部曲—带你顺利度过试用期
  15. 怎么样计算机械功率,电功率与机械功率的换算公式
  16. 【Web_UI自动化_Python3_大众点评霸王餐_Seleniumpprint】(美团)大众点评霸王餐免费抽取,网址爬虫+自动报名,自动化测试案例
  17. c语言借助中间变量完成的作业,北京交通大学黄宇黄宇老师C语言第一次作业.doc...
  18. 零基础学软件测试难吗?小白怎么半年内成为测试工程师
  19. 复旦毕业生兼职送外卖,去你的“精神内耗”
  20. CDbCriteria CArrayDataProvider zii.widgets.grid (1)

热门文章

  1. 这样的男人有几个;1.会为你哭的男人2.喜欢欺负你的男人3.会主动亲你的男人4.喜欢叫你傻瓜
  2. 什么是真正的转运?常见的五种转运方法
  3. 防止机械/移动硬盘休眠 - NoSleepHD
  4. java lifo 队列_java - 如何在LIFO模式下实现链接的阻塞队列 - SO中文参考 - www.soinside.com...
  5. 磊科nw362 linux驱动下载,磊科nw362无线网卡驱动
  6. 基于SVM算法的男女生分类器
  7. Ubuntu忘记超级用户root密码,重新设置密码
  8. Linux 加密与解密应用
  9. ionic5中轮播图ion-slides、ion-slide的使用
  10. qlv转php,如何将qlv文件转换成mp,qlv文件怎么免费转换为mp4格式