Javascript rgb值通过什么计算进行更改?
这里我有一些代码,它创建了一个隐藏另一个图像的图像。 我打印出一些rgb值以查看更改(在实现函数chopToHide和函数shift后,但我不明白数字是通过什么计算更改的)。这段代码是一个较大的程序的一部分,用于将一个图像隐藏在另一个图像中(隐写术)。Javascript rgb值通过什么计算进行更改?,javascript,binary,hex,decimal,steganography,Javascript,Binary,Hex,Decimal,Steganography,这里我有一些代码,它创建了一个隐藏另一个图像的图像。 我打印出一些rgb值以查看更改(在实现函数chopToHide和函数shift后,但我不明白数字是通过什么计算更改的)。这段代码是一个较大的程序的一部分,用于将一个图像隐藏在另一个图像中(隐写术)。 这就是我工作的环境: var start=newsimplemage(“astrachan.jpg”); var hide=新的SimpleImage(“duvall.jpg”); 打印(开始); 打印(隐藏); 打印(“astrachan图片的
这就是我工作的环境:
var start=newsimplemage(“astrachan.jpg”);
var hide=新的SimpleImage(“duvall.jpg”);
打印(开始);
打印(隐藏);
打印(“astrachan图片的宽度和高度”);
打印(start.getHeight(),start.getWidth());
打印(“duvall图片的宽度和高度”)
打印(hide.getHeight(),hide.getWidth());
var cropWidth=start.getWidth();
if(hide.getWidth() 对于(i=1;i这段代码的目标是将两幅图片上每个颜色通道的颜色范围从0..255(8位,一个“字节”)减少到0..15(4位,一个“Nyble”),然后将两个Nyble组合成一个字节。颜色处于高Nyble的图片将产生可感知的颜色变化(以16为增量);隐藏在低Nyble中的图片将对主图片像素的颜色进行不知不觉的着色
公式应为:
steganoImageColour = (overtImageColour & 240) | (covertImageColour >> 4)
或同等地(但不是那么快):
要提取隐藏图像,只需使用低Nyble并将其提升为高:
reconstructedCovertImageColour = (steganoImageColour & 15) << 4
例如,如果在公开图像(17325547)中有一个绿黄色像素,在隐蔽图像(135206250)中有一个浅天蓝色像素,则生成的像素是(16825247),它仍然非常接近原始绿黄色,但可以从中重建(128192240),这非常接近原始的浅天蓝色
overt(绿-黄)
隐蔽(浅天蓝色)
隐写术(接近绿黄色)
重建的covert(足够接近淡天蓝)
ReconstructedCovertImageColor=(隐写图像颜色%16)*16百分号的作用是什么?您是如何得出的(128192240)对于重建的值?我不知道%16是什么…168%16
是8
,因为160
可以被16
整除,而8
是额外的。但是168%16是0.5。0.5*16不是128。我在这里感到困惑。0.5
?你从哪里得到0.5
代码>是10
,剩下8
。因此,168%16
是8
…不是0.5
。
steganoImageColour = (Math.floor(overtImageColour / 16) * 16) +
Math.floor(covertImageColour / 16)
reconstructedCovertImageColour = (steganoImageColour & 15) << 4
reconstructedCovertImageColour = (steganoImageColour % 16) * 16