cad.net 利用傅里叶变换藏文件
本帖最后由 你有种再说一遍 于 2024-11-3 22:38 编辑# 利用傅里叶变换藏文件
本篇是一篇概念性文章,也就没有经过实验.
@yupeng_dyp (零点)制作了一个碧福图库
http://bbs.mjtd.com/thread-191354-1-1.html
发现他在切换风格非常慢,
然后,他告诉我(我还看了源码)
是后台打开图纸,然后渲染,写入缩略图,保存.
再通过ReadFileBits读取dwg缩略图(这个非常快).
问题就在于:打开图纸,重新渲染,这一个步骤非常慢,其他倒是没有什么所谓,为此我想了以下几种方案.
## 方案一: 四分合并
把缩略图分为田字,每个格子分别为:暗夜风/明亮风/蓝底风/草图风.
这样做的话,图库只需要一次开图四次渲染,
读取只需要一次,然后执行二分裁剪得到缩略图,缓存起来.
使用切换风格时,切换就只需要裁剪和更换缓存.
缺点:win预览图会看到这个田字格.
## 方案二: 二进制合并
还记得图种制作吗?
也就是图片+txt(内写了种子)合并二进制,就可以根据不同的后缀名读到对应的文件了.
但是这似乎不太适合我们这个场景,我们没有后缀名机制和文件头不同的签名.
疑问:win预览图读取dwg缩略图会拿到后面的txt,然后呈现啥样呢?会不会罢工不呈现呢?因为读取缩略图前面有个数字指示后面读取多少bit是图片的.
## 方案三: 频域信息隐藏
一些网站防止PHP漏洞,以及藏种,所以会对图片进行二次渲染.(还可以利用linux文件权限限制漏洞执行)
但是道高一尺魔高一丈,代码不会骗你,数学也不会骗你,通过傅里叶变换插入信息到频域以及加入冗于校验来恢复,这样甚至可以把一个压缩包藏里面,然后读取出来还能识别.
基于2D-FFT的变换域信息隐写:
https://blog.csdn.net/Natukiaaa/article/details/120259449
BMP版本:
https://blog.csdn.net/Natukiaaa/article/details/120259482
傅里叶变换是一种数学工具,它能够将图像从空间域转换到频域,揭示图像的频率成分;
在信息隐藏领域,傅里叶变换可以用来隐藏信息,即通过在频域中修改图像的频率成分来嵌入秘密信息;
这种方法的一个主要优势是,人眼对高频信息不太敏感,因此可以在不显著改变图像视觉效果的情况下隐藏信息;
基于傅里叶变换的图像隐藏技术通常涉及以下几个步骤:
1.傅里叶变换:
首先对图像进行二维快速傅里叶变换(2D-FFT),将其从空间域转换到频域;
2.信息嵌入:
在频域中,将秘密信息嵌入到图像的频率成分中;这通常涉及到修改图像的相位或幅度信息;由于人眼对高频信息不太敏感,因此可以在高频区域嵌入更多的信息;
3.逆傅里叶变换:
4.将嵌入了秘密信息的频域图像转换回空间域,得到含有隐藏信息的图像;
5.提取信息:
当需要提取隐藏的信息时,再次对含有隐藏信息的图像进行傅里叶变换,从频域中提取出嵌入的信息;
在实际应用中,为了提高隐藏信息的安全性和鲁棒性,可能会结合其他技术,如混沌理论/加密算法等;
例如,可以使用混沌序列来生成随机相位,增加密钥的复杂性,或者使用AES等加密算法对隐藏信息进行加密,以防止未授权的提取;
有多种基于傅里叶变换的图像隐藏技术,包括但不限于:
> 基于2D-FFT的变换域信息隐写:
这种方法通过在频域中嵌入水印图像来实现信息隐藏,同时考虑了安全性/隐蔽性/鲁棒性的需求;
> 基于分数阶傅里叶变换的数字水印算法:
这种方法利用分数阶傅里叶变换的特性来嵌入和提取数字水印,以保护数字产品的版权;
> 基于级联迭代傅里叶变换的图像隐藏技术:
这种方法通过级联迭代傅里叶变换来提高信息隐藏的安全性,可以抵御选择明文攻击和已知明文攻击;
https://blog.csdn.net/qq_36584460/article/details/123961051
图片藏信息,重渲染也没法解决这个漏洞
https://www.zhihu.com/question/607058738
它的github地址
https://link.zhihu.com/?target=h ... scade/PainterEngine
快速FFT代码学习
https://zhuanlan.zhihu.com/p/422925896
(完) 看了一下原贴的动图,只有12个图的话确实用时有点久。
为什么要“后台打开图纸,然后渲染,写入缩略图,保存.”?
以前试验过,200张图左右,用时大概2s,还包括黑白转换。我都觉得太慢了。 本帖最后由 你有种再说一遍 于 2024-10-26 01:52 编辑
紫苏炒黄瓜 发表于 2024-10-25 17:27
看了一下原贴的动图,只有12个图的话确实用时有点久。
为什么要“后台打开图纸,然后渲染,写入缩略图,保存. ...
经过你这么一说,我确实发现了他代码里面做了一些没必要的事情.打开图纸之后居然遍历全图求视图矩形了.
页:
[1]