相册选择图片并给图片添加水印后上传到服务器

�记录一下最近在做的项目中的一个功能,功能需求如下:

功能需求

产品要求是用户可以从手机相册里选择一张照片,然后得到这张照片的拍摄时间和拍摄地点,然后以文字水印的方式添加到照片上,然后上传到服务器.界面的问题就不做说明了,主要说下业务逻辑.

1.打开手机相册,并选取图片.首先要遵守协议:UIImagePickerControllerDelegate 和 UINavigationControllerDelegate.

打开相册,选取照片

2.然后实现完成选择图片的代理方法,在此方法里获取图片的信息,地址这里获取到的是经纬度,需要进行反地理编码.

完成选择图片

取消选择图片的代理方法:

取消选择图片

3.因为图片的地址是异步获取的,因此我在这里添加了一个观察者来监视 address 的变化,如果获取不到地址则只打印日期.当然要记得在 dealloc 的时候把观察者移除.

添加观察者

4.由于手机拍摄的照片都比较大,一般2~3M,我们在这里做一个压缩图片的处理,方便后面快速上传图片到服务器.�以下代码的作用是等比例压缩.

等比例压缩

而我们产品的要求是上传图片的大小要保持在200K以内,因此我想到了一个动态压缩的方案,即根据图片的大小来动态改变压缩系数,将上面的代码换成如下代码:

固定尺寸和大小压缩

5.然后就是把获取到的图片信息以文字水印的形式显示在图片上,可以任意调整水印的位置,字体,颜色等.

添加水印

6.保存加过水印的图片到本地沙盒中,路径相同的文件会覆盖保存,后面上传的时候会通过路径找到相应文件.

保存图片

7.由于我这里还有一个删除选择过的图片的功能,因此还要有删除沙盒中文件的方法.

8.以字典的形式将图片路径和文件名上传.

上传图片

工具类内网络请求封装方法如下:

这样就上传成功了.

最后上一张昨天拍的公司园区内一个土豪的座驾.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,498评论 25 708
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,251评论 4 61
  • 小时候,像大多数中国独生子女,我在家什么家务都不做,只要好好学习,天天向上就行了。衣服是妈妈买的,上什么学校是妈妈...
    Julie30阅读 128评论 0 0
  • 我体验过一场世界上最短的旅行,是从宿舍楼下到图书馆的距离,那简直是一场视觉盛宴,它让我觉得世界都生活在童话里。 我...
    ii南有乔木阅读 442评论 4 3
  • 本章主要介绍SEO优化工作中,在网站内部优化方面需要了解的工作。本文版权由“ 北朔潜龙 ”所有,仅供学习使用,请勿...
    北朔潜龙阅读 366评论 0 0