做了个图片隐写的玩具

所谓图片隐写,将要隐藏的文字写入图片中,并且让肉眼不可查。早期在windows上有copy这种命令可以实现把一段文本和图片合并,但这种做法显然隐秘性和兼容性都不好,我这里用的是另外一种思路。

原理比较简单,将输入的文本转为二进制字符串,然后和图片的RGB像素奇偶对应。 比如: 图片前三个像素RGB的值为(222,111,23),(222,10,23)(1,58,40),规则为1对奇0对偶,则这三个像素对应存储的二进制为 011001100。

现在已知一个二进制串,只需要对图片像素进行微调,即可记录下这串二进制字符串,这个像素微调对人眼来说是无法区分的。 提取文本则是进行一个反向运算。

经过处理的图片和原图在肉眼上几乎没有区别,并且在体积上不会造成明显膨胀。 (处理后的体积可能略微膨胀,甚至会变小,取决于原图色彩的复杂度)
理论上最大可支持几十M文本

APP截图
hide

原图:

经过处理的图片:

处理的图片中隐藏了这么一句话:“ 组织上已经决定了,今天的垃圾都归你”

软件使用Java开发,跨平台,源码开放,理解了原理后,也完全可以参考源码使用其它语言实现。
软件地址:https://github.com/iminto/hideImage
下载地址:https://github.com/iminto/hideImage/releases

我还知道一个图片隐写软件,它的开发者的网站真的很漂亮,软件也很漂亮:
http://nullice.com/imagein
Snipaste_2019-09-21_17-02-30

这个不错,比较易用。
我写的这个优点在于开源跨平台,可隐藏的文字内容较多

这些工具,就没有一个浏览器扩展么?转换来转换去很麻烦呀。

如果图片被重新处理过。比如从 jpg 转成了 png,再加个水印,文本信息还存在么?

当年我百度空间分享软件就用图片格式.

其实这个工具只支持PNG/GIF格式,理论上BMP这种无压缩格式也支持(当然现在几乎没人用BMP格式了)。

因为jpg是有损压缩,每次处理后数据都会变化,要处理JPG就不能用这种思路了。网上大多数类似格式都仅支持PNG格式。

jpg也有无损压缩算法的,但很少用。

加水印后,文本信息就会被破坏了,可能仅能提取部分了。

我记得使用 DCT 变换以后加水印就不太容易被破坏。