iOS 隐形水印之 LSB 实现

  

 

 

本文字数:2581

预计阅读时间:7分钟

在音视频的领域里,其涵盖的知识点繁多,学习方向也很多。

而本篇就是一篇比较入门的文章

它简单地介绍如何在 iOS 上读取图片 RGB 数据,并通过修改最后一位 bit 来记录数字水印的信息

下面就介绍《隐形水印之 iOS 实现》

欢迎阅读

技术

背景

本文实现的两个技术点

     水    印     

水印是经常出现在图片 & 视频等多媒体文件上是一种很常见的元素,它一般以单一的图片或者文字的形式显示在一个角落。

它主要用于声明版权 & 防盗,以及查看来源等。

而我们千帆直播在主播直播后,我们的后端会为生成的 点播 & 回放 打上「千帆直播」水印,如下图的右上角:

compare

这种水印是可见的,添加水印的方式可以是直接将水印图片的原数据memcpy 到载体图片原数据上(这里只是简单描述啦,对齐这些各位自己了解下)。还有可以使用第三方库,如 ffmpeg等。

   L S B  

英文 least significant bit,中文译最低有效位。

用个例子来描述下,我们知道一个数字,如11,把它转换为二进制的话就是 0000 1011,取最右边的 1 即为最低位。

而本文是针对图片的,图片的原数据构成是 RBG,那我们的操作就是:

(255, 255, 255) -取255-> 1111 1111 -> 把最后一位(1 => 0) -> 1111 1110 -放回-> (254, 255, 255)

这也是本文实现的核心。

而上面的操作会让原本的白色在 R值 上变小,然后再转换回颜色上,人眼是很难看出修改之后与之前的差别。

因此我们这样的修改对原本的影响是很小的。

这就是我们通过获取 LSB,修改它来实现本次技术点。

 数字 

 水印 

结合我们上面说的两个技术点,就是我们的实现了。

这里介绍数字水印,一种不易被发现的水印,也可以叫它,隐形水印。顾名思义,它不会像一般的水印一样显示在图片 & 视频帧上,而是通过其他技术原理将信息附带在载体上,最后通过反计算来获取信息内容。

数字水印的实现其实不止 LSB,还有其他改进的 LSB,或者其他算法,本文使用 标准LSB 来实现。

但算法的大致都是建立在对原数据的修改不会在视觉上被察觉,将信息加入到原数据里面,有点像藏头诗。

通过以上大概了解原理 & 技术背景之后,本篇将着重使用 标准的LSB 来为 iOS 的截图上添加隐形水印 & 获取隐形水印内容。

 应用 

 场景 

在Demo App上通过系统的截图后,将已经加入隐形水印的 App 截图展示,通过直接分享到QQ或者保存到相册,再由相册分享到QQ,然后客服获取到图片之

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值