在中级篇里面,已经介绍过相册与拍照的简单使用了,那么接下来我们就来讲一讲它们的后续处理,到底应该怎么做才好呢

首先我们先来讲拍照

还是那个点击使用照片后调用的代理方法中,我们来做以下代码中所提到的事情


- (void)p_w_picpathPickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {[picker dismissViewControllerAnimated:YES completion:NULL];NSString *mediaType = [info valueForKey:UIImagePickerControllerMediaType];UIImage *newImage;WS(weakSelf);if ([mediaType isEqualToString:@"public.p_w_picpath"]) {UIImage *originImage = [info objectForKey:UIImagePickerControllerOriginalImage];dispatch_sync(dispatch_get_global_queue(0, 0), ^{[weakSelf saveImageToPhotos:originImage];});newImage = [self scaleImage:originImage toScale:0.1];}[_p_w_picpathArray addObject:newImage];
}

这个时候,从里面取出的图片是原图,毕竟尺寸、占用内存都比较大,我们需要进行剪切来优化它


-(UIImage *)scaleImage:(UIImage *)p_w_picpath toScale:(float)scaleSize {UIGraphicsBeginImageContext(CGSizeMake(p_w_picpath.size.width*scaleSize,p_w_picpath.size.height*scaleSize));[p_w_picpath drawInRect:CGRectMake(0, 0, p_w_picpath.size.width * scaleSize, p_w_picpath.size.height *scaleSize)];UIImage *scaledImage = UIGraphicsGetImageFromCurrentImageContext();UIGraphicsEndImageContext();return scaledImage;
}

当然了,原图我们也是需要保存到相册里面的,所以我们的保存方法如下


- (void)saveImageToPhotos:(UIImage *)savedImage {UIImageWriteToSavedPhotosAlbum(savedImage, self, @selector(p_w_picpath:didFinishSavingWithError:contextInfo:), nil);
}- (void)p_w_picpath:(UIImage *)p_w_picpath didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo {NSString *message = nil;if (error) {message = @"保存失败";} else {message = @"保存成功";[self getAssetsLastPhoto];}NSLog(@"%@", message);
}

这就是拍照后续的使用了,如果还需要优化的话,那就要看你们的产品以及后台如何制定方案了

接下来我们来讲一讲相册吧

最常用的就是我们需要调用一个方法,将所有的照片都取出来,这里要注意的一点是,我们只要缩略图以及原图URL地址就可以了,因为它们两个还是比较重要的


- (void)loadAssets {// Initialise_assets = [NSMutableArray new];_assetLibrary = [[ALAssetsLibrary alloc] init];// Run in the background as it takes a while to get all assets from the librarydispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{NSMutableArray *assetGroups = [[NSMutableArray alloc] init];NSMutableArray *assetURLDictionaries = [[NSMutableArray alloc] init];// Process assetsvoid (^assetEnumerator)(ALAsset *, NSUInteger, BOOL *) = ^(ALAsset *result, NSUInteger index, BOOL *stop) {if (result != nil) {if ([[result valueForProperty:ALAssetPropertyType] isEqualToString:ALAssetTypePhoto]) {[assetURLDictionaries addObject:[result valueForProperty:ALAssetPropertyURLs]];NSURL *url = result.defaultRepresentation.url;[_assetLibrary assetForURL:urlresultBlock:^(ALAsset *asset) {if (asset) {@synchronized(_assets) {[_assets addObject:asset];if (_assets.count == 1) {// Added first asset so reload data//                                                   [self.tableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:NO];}}}}failureBlock:^(NSError *error){NSLog(@"operation was not successfull!");}];}}};// Process groupsvoid (^ assetGroupEnumerator) (ALAssetsGroup *, BOOL *) = ^(ALAssetsGroup *group, BOOL *stop) {if (group != nil) {[group enumerateAssetsWithOptions:NSEnumerationReverse usingBlock:assetEnumerator];[assetGroups addObject:group];}};// Process![self.assetLibrary enumerateGroupsWithTypes:ALAssetsGroupAllusingBlock:assetGroupEnumeratorfailureBlock:^(NSError *error) {NSLog(@"There is an error");}];});}

在显示缩略图的地方,我们可以显示缩略图,而在显示原图的地方,我们也可以根据URL显示原图


@synchronized(_assets) {NSMutableArray *copy = [_assets copy];for (ALAsset *asset in copy) {[photos addObject:[MWPhoto photoWithThumbImage:[UIImage p_w_picpathWithCGImage:asset.thumbnail]  URL:asset.defaultRepresentation.url]];}}

上面的方法,就是加入原图的缩略图以及地址URL,这里我用了一个包含两个属性的类来添加,当然你也可以弄两个类来单独添加

另外在上传图片的时候还是需要对原图进行剪切,改变base64,当然还是要看你们服务器那边的方案

好啦,这就是我们对相册以及拍照的后处理咯

就写到这里吧,有什么问题,可以来群里找我哦

转载于:https://blog.51cto.com/neusoftios/1650050

进阶篇第九期:相册与拍照的后处理相关推荐

  1. 随心篇第九期:我不愿一无所有

    这周项目组的小组长找我单独聊了天,聊的是关于我们这个项目组未来的趋势,毕竟我们这个项目组只有技术的同事是我们一个组的,其余的同事都是另几个组的,现在要合并成一个大组 听起来还不错,毕竟这个项目组还是蛮 ...

  2. [Python公开课]零基础玩转Python进阶篇----第九节:Python的异常分析及解决

  3. Android进阶之路 - 解决部分手机拍照之后图片被旋转的问题

    这几天犯了一个错误,初期想着甩锅给后台的- 但还好及时发现了是自身的问题~ 关联文章 Android基础进阶 - 调用拍照.获取图片(基础) Android基础进阶 - 获取.调用相册内图片(基础) ...

  4. mysql 统计 打卡数据_第九期30天打卡赠书和红包活动,今天正式启动!

    点击上方"程序IT圈",选择"置顶公众号" 每天准时进来打卡留言哈! 公众号第九期打卡,由于春节假期,又不幸遇上突发疫情,导致了打卡活动一再推迟,今天终于可以正 ...

  5. SQL Server调优系列进阶篇(如何维护数据库索引)

    前言 上一篇我们研究了如何利用索引在数据库里面调优,简要的介绍了索引的原理,更重要的分析了如何选择索引以及索引的利弊项,有兴趣的可以点击查看. 本篇延续上一篇的内容,继续分析索引这块,侧重索引项的日常 ...

  6. C++语言程序设计视频教程_清华大学_郑莉(基础篇+进阶篇)

    C++语言程序设计视频教程_清华大学_郑莉(基础篇) 第一章:绪论 1.1 导学 1.2 计算机系统简介 1.3计算机语言和程序设计方法的发展 1.4 面向对象的基本概念 1.5 程序的开发过程 1. ...

  7. OpenCV进阶篇视频

    OpenCV进阶篇01 第14章 视频处理 OpenCV不仅能够处理图像,还能够处理视频.视频是由大量的图像构成的,这些图像以固定的时间间隔从视频中获取.这样,就能够使用图像处理的方法对这些图像进行处 ...

  8. [安全攻防进阶篇] 六.逆向分析之OllyDbg逆向CrackMe01-02及加壳判断

    前文作者讲解了OllyDbg和在线沙箱的逆向分析过程,分享了恶意软件如何通过宏脚本发送勒索信息或密码至用户邮箱.这篇文件将带领大家逆向分析两个CrackMe程序,包括逆向分析和源码还原,基础性文章,希 ...

  9. [安全攻防进阶篇] 四.逆向分析之条件语句和循环语句源码还原及流程控制逆向

    从2019年7月开始,我来到了一个陌生的专业--网络空间安全.初入安全领域,是非常痛苦和难受的,要学的东西太多.涉及面太广,但好在自己通过分享100篇"网络安全自学"系列文章,艰难 ...

  10. [安全攻防进阶篇] 一.什么是逆向分析、逆向分析应用及经典扫雷游戏逆向

    从2019年7月开始,我来到了一个陌生的专业--网络空间安全.初入安全领域,是非常痛苦和难受的,要学的东西太多.涉及面太广,但好在自己通过分享100篇"网络安全自学"系列文章,艰难 ...

最新文章

  1. 笔记 | 深入理解深度学习语义分割
  2. 2020秋季-人工神经网络课程报告
  3. a标签中href=javacript:; href=javacript:void(0); href=#区别
  4. 8.公有继承 保护继承 私有继承
  5. ab753变频器参数怎么拷贝到面板_技术贴:100吨连铸安川变频器的更换
  6. 你的安全设置不允许在您的计算机,你的安全设置不允许网站使用安装在你的计算机上的ActiveX控件...
  7. java web与android互通的aes算法
  8. IIS 7.0 安装SSL证书过程
  9. 火狐浏览器工具栏/折叠菜单怎么设置?火狐浏览器工具栏/折叠菜单定制教程
  10. HDU 4115 Eliminate the Conflict(2-sat)
  11. ArcGIS API 离线字体库加载及跨域问题解决
  12. android 批量保存网页图片大小,360浏览器看图模式 一键保存“高清套图”
  13. 三茗硬盘保护系统安装Linux,重装windows系统而不影响linux引导的方法
  14. 以大TMS运输配送管理系统
  15. linux国际象棋,国际象棋通用引擎协议
  16. 大厂“P8/P9”必读《成为思维高手》pdf 电子书下载
  17. Zigbee基础理论知识总结
  18. 【Java】Java中Pair的使用
  19. BZOJ3398 [Usaco2009 Feb]Bullcow 牡牛和牝牛
  20. 一些关于vim的入门资料

热门文章

  1. python服务端开发调试日志系统_Loglog首页、文档和下载 - 基于 Python2.7 的日志系统 - OSCHINA - 中文开源技术交流社区...
  2. chpater 2 : InnoDB存储引擎
  3. 数值计算详细笔记(二):非线性方程解法
  4. HDU1317 —— 最长路+判断正环
  5. PyQt5 the application failed to start because no Qt platform could be initialized
  6. JDK11使用HSDB
  7. win7计算机自动关机设置在哪里设置方法,win7怎么设置自动关机【详细步骤】
  8. python樱花树画法图片_武大樱花又盛开,用Python画一棵樱花树
  9. 【转】基于nginx + lua实现的反向代理动态更新
  10. 【转】keil5 missing close quote 错误解决