Java 数字制水技术
我正在尝试实现一个新的数字水印系统,这是嵌入过程 参考文件在以下链接中提供 我无法理解嵌入过程,因此plz可以帮助任何人,谢谢 专用字节[]编码_文本(字节[]图像,字节[]加法,整数偏移) {Java 数字制水技术,java,image,image-processing,watermark,Java,Image,Image Processing,Watermark,我正在尝试实现一个新的数字水印系统,这是嵌入过程 参考文件在以下链接中提供 我无法理解嵌入过程,因此plz可以帮助任何人,谢谢 专用字节[]编码_文本(字节[]图像,字节[]加法,整数偏移) { //检查数据+偏移量是否适合图像 if(addition.length+offset>image.length){ 抛出新的IllegalArgumentException(“文件不够长!”); } //循环遍历每个加法字节 对于(int i=0;i=0;--bit,++offset)//确保新的of
//检查数据+偏移量是否适合图像
if(addition.length+offset>image.length){
抛出新的IllegalArgumentException(“文件不够长!”);
}
//循环遍历每个加法字节
对于(int i=0;i=0;--bit,++offset)//确保新的offset值通过两个循环进行
{
//将一个整数赋给b,按位空间和1移位
//当前字节的单个位
int b=(添加>>>位)&1;
//通过获取:[(上一个字节值)和0xfe]或要添加的位来分配位
//将图像中字节的最后一位更改为加法位
图像[偏移]=(字节)((图像[偏移]&0xFE)| b);
}
}
返回图像;
}
这是嵌入过程此算法只需替换图像像素的最后一位,并替换为要在图像中隐藏它的加法字节的位 方法的输入:
:您将隐藏数据的图像byte[]image
:要隐藏的数据byte[]addition
:变量将确定要隐藏的起始索引(这只是一个技巧,不需要从0索引开始隐藏,由您决定)int offset
加法
数组上循环,假设数组中的第一个字节是10
它的字节是(00001010)
此数据将嵌入b像素中
让我们看看如何? 假设
图像[offset]=20
-->假设offset
=0
int b = (add >>> bit) & 1;---->in the start loop will be (00001010)
^
然后,我将用这个附加位替换图像[offset]
中的最后一个有效位0
image[offset]=20---------------->0000100
,当我用0
它将是0000100------------->20
因此,我将通过20
在数组中设置包含0
位信息的新image[offset]
值
假设
b=1
,图像[偏移量]=20
因此,当我替换中的LSB2时
它等于(21),因此21
是嵌入1
1,2:LSB表示:最小有效位
此算法只需替换图像像素的最后一位,并将其替换为要在图像中隐藏的加法字节的位 方法的输入:
:您将隐藏数据的图像byte[]image
:要隐藏的数据byte[]addition
:变量将确定要隐藏的起始索引(这只是一个技巧,不需要从0索引开始隐藏,由您决定)int offset
加法
数组上循环,假设数组中的第一个字节是10
它的字节是(00001010)
此数据将嵌入b像素中
让我们看看如何? 假设
图像[offset]=20
-->假设offset
=0
int b = (add >>> bit) & 1;---->in the start loop will be (00001010)
^
然后,我将用这个附加位替换图像[offset]
中的最后一个有效位0
image[offset]=20---------------->0000100
,当我用0
它将是0000100------------->20
因此,我将通过20
在数组中设置包含0
位信息的新image[offset]
值
假设
b=1
,图像[偏移量]=20
因此,当我替换中的LSB2时
它等于(21),因此21
是嵌入1
1,2:LSB表示:最小有效位
请使用其他服务共享参考文件。4shared需要安装可疑下载管理器。请使用其他服务共享参考文件。4shared需要安装可疑的下载管理器。
(20)---->00010100 by the 1 it will be 00010101
^ ^