参考资料
- HTML开发者工具禁用技术实现
- 不同浏览器的禁用方法
- HTML 数学符号
- HTML 标题
- 如何在Electron应用中禁用开发者工具?
- HTML 表格背景
- html链接标签详细说明以及案例
- Html转义工具有哪些
隐形水印嵌入技术详解
隐形水印嵌入技术详解(含HTML代码示例)
1. 图片水印技术
1.1 频域水印(DCT变换)
<script></script>
1.2 LSB水印(最低有效位)
<canvas id="watermarkCanvas"></canvas><script>function embedLSBWatermark(image, watermark) { const canvas = document.getElementById('watermarkCanvas'); const ctx = canvas.getContext('2d'); ctx.drawImage(image, 0, 0); const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height); const data = imageData.data; </script>
2. 文本水印技术
2.1 不可见Unicode字符
<script>function embedTextWatermark(originalText, userId) { </script>
2.2 CSS微调水印
<style>.watermarked { letter-spacing: 0.1px; } .watermarked::after { content: "\200B\200C\200D"; font-size: 0;}</style> <script>function applyTextWatermark(elementId, watermark) { const element = document.getElementById(elementId); element.classList.add('watermarked'); </script>
3. 水印检测代码
<script>// 检测图片LSB水印function detectLSBWatermark(imageData) { let binary = ''; const data = imageData.data; for(let i=0; i<data.length; i+=4) { // 提取红色通道LSB binary += (data[i] & 1).toString(); if(binary.length % 8 === 0) { const char = binaryToChar(binary.substr(-8)); if(char === '\0') break; // 假设以null字符结束 } } return binaryToString(binary);} // 检测文本零宽度水印function detectTextWatermark(text) { const zeroWidthRegex = /[\u200B-\u200D\uFEFF]+/g; const matches = text.match(zeroWidthRegex); if(!matches) return null; let binary = ''; matches