目前在研究一下图像的处理,看了一下相关的软件,比如:《去水印大师》,究竟去水印是怎么处理的呢?看图分析。

一共是三个功能:快速去水印、高级去水印、涂鸦去水印

快速去水印:暂时没找到好的处理方法,可以使用高斯模糊的方式去处理,效果还不错。

高级去水印:这个要使用opencv这个C++的库

涂鸦去水印:就单纯的涂鸦处理

高级去水印

可参考github:

https://github.com/ahgdwang/WaterMarkDelete

https://github.com/CodingClearLoveLove/Watermarks2

涂鸦去水印

可参考github:

https://github.com/siyunyou/CRJDrawImageView

总结

1、涂鸦去水印和高级去水印,可以混合使用。由于涂鸦去水印,每画一笔,都是在CAShapeLayer图层上操作,而高级去水印是基于图片处理的,因而,需要将涂鸦去水印每一笔画完去保存成一张图片。

2、处理图片的UIImageView,需要根据图片的大小比例去创建,这样,会出现图片比例是无限循环小数的时候,每次保存图片都会让图片失真并且缩小。暂时没有好的处理方式。

OpenCV的库,研究起来,还是很吃力的,可以看看以下的文章

1、https://www.jianshu.com/p/eed90371a3a6

2、http://blog.devtang.com/2013/10/19/the-tech-detail-of-ape-client-2/

3、https://www.jianshu.com/p/476ba34fca96

4、https://www.jianshu.com/p/96be2417cc98

iOS 高级去水印,涂鸦去水印的更多相关文章

  1. 北京联想招聘-IOS高级 加入qq 群:220486180 或者直接在此 留言咨询

    ios 高级开发 Job ID #: 47980 Position Title: 高级iOS development engineer Location: CHN-Beijing Functional ...

  2. (转发)IOS高级开发~Runtime(四)

    用C代替OC: #import <objc/runtime.h> #import <objc/message.h> #import <stdio.h> extern ...

  3. (转发)IOS高级开发~Runtime(三)

    11.系统类的方法实现部分替换 - (void) methodExchange { Method m1 = class_getInstanceMethod([NSStringclass],@selec ...

  4. (转发)IOS高级开发~Runtime(二)

    一些公用类: @interface ClassCustomClass :NSObject{ NSString *varTest1; NSString *varTest2; NSString *varT ...

  5. (转发)IOS高级开发~Runtime(一)

    IOS高级开发-Runtime(一) IOS高级开发-Runtime(二) IOS高级开发-Runtime(三) IOS高级开发-Runtime(四) 一些公用类: @interface Custom ...

  6. IOS高级编程之一:多点触摸与手势验证

    前段时间学习了IOS基础的一些控件的使用作为基础,现在开始学习一些高级编程的东西,手势处理器.文件I/O.定位.网络通信.多线程这些,分享一些学习的重点,还是很实用的. 今天就先介绍个简单点得,手势处 ...

  7. iOS 高级框架的介绍

    Core Data.Core Graphics.Core Animation 和 OpenGL ES 框架,是对于应用程序开发很重要的高级技术,因此需要花时间来学习和掌握. Core Data 框架管 ...

  8. 【转】iOS高级向的十道面试问题

    原文:http://onevcat.com/2013/04/ios-interview/ 不管对于招聘和应聘来说,面试都是很重要的一个环节,特别对于开发者来说,面试中的技术问题环节不仅是企业对应聘者技 ...

  9. 新浪微博资深大牛全方位剖析 iOS 高级面试

    第1章 课程简介本章对这门课程所讲述内容进行概要介绍,其中包括课程目标.适合人群,课程特色.课程收获.课程安排等.整个课程学习完结后,有机会获得电话模拟面试及内推. 1-1 课前必读(不看会错过一个亿 ...

随机推荐

  1. 4337: BJOI2015 树的同构

    题解: 树的同构的判定 有根树从根开始进行树hash 先把儿子的f进行排序 $f[i]=\sum_{j=1}^{k} { f[j]*prime[j]} +num[i]$(我没有仔细想这样是不是树是唯一 ...

  2. .net OADate 转javascript的Datetime js 5位 日期 转换

    以下是将.net的OADate转成javascript的DateTime函数. 其中参数oadate是.net那里传过来的UTC时间的double.记得 一定是UTC时间. .net Double o ...

  3. net core体系-web应用程序-4asp.net core2.0 项目实战(1)-13基于OnActionExecuting全局过滤器,页面操作权限过滤控制到按钮级

    1.权限管理 权限管理的基本定义:百度百科. 基于<Asp.Net Core 2.0 项目实战(10) 基于cookie登录授权认证并实现前台会员.后台管理员同时登录>我们做过了登录认证, ...

  4. Maven中pom.xml文件的配置

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...

  5. aop切入mapper接口

    ***************************************分割线****************************************************** 参考: ...

  6. c#堆与栈

    一.在讲堆栈之前,我们先看看值类型和引用类型: 1,我们看看值类型与引用类型的存储方式: 引用类型:引用类型存储在堆中.类型实例化的时候,会在堆中开辟一部分空间存储类的实例.类对象的引用还是存储在栈中 ...

  7. 面试题:常用的http状态码

    3XX 重定向 301 Moved Permanently    永久重定向,表示请求的资源已经永久的搬到了其他位置 302 Found  临时重定向,表示请求的资源临时搬到了其他位置 303 See ...

  8. Django路由机制

    Django的URL路由配置: Settings.py文件中的ROOT_URLCONF变量指定全局路由文件名称 ROOT_URLCONF = '工程名称.urls'   #默认对应工程目录下urls. ...

  9. dbconfig.properties

    jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/数据库名 jdbc.username=root jdbc. ...

  10. macos解决Hadoop之Unable to load native-hadoop library

    很显然,native-hadoop library不支持macos,如果是Linux就不会有这个问题.在百度上搜了,要下载在macos上编译的native hadoop library,我在网上下载了 ...