用C# 实现位图像素处理
本人要做一个信息隐藏的软件,原理是只样的W'=W+a*X,其中,W'是嵌入水印后的图象像素,W是原始图象的像素,X是要嵌入的水印(二进制:0或者1),a是嵌入因子,一般在0~1之间。在BMP中一个像素有24bit,用Getpixel()方法得到的像素是Color类型,但在嵌入的时候加的值是个小数,而像素是一个24bit的数,这个怎么处理?还有,一个Color类型不能直接与一个float或者double类型直接相加?那这个又怎么转换?有高人指点一下啊,给出一点思路或者一段代码!谢谢.如果有代码能不能发到:zh1985444@sina.com.cn --------------------编程问答-------------------- up --------------------编程问答-------------------- 翻转算法:
public static bool Invert(Bitmap b)
{
BitmapData bmData = b.LockBits(new Rectangle(0, 0, b.Width, b.Height),ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);
int stride = bmData.Stride;
System.IntPtr Scan0 = bmData.Scan0;
unsafe
{
byte * p = (byte *)(void *)Scan0;
int nOffset = stride - b.Width*3;
int nWidth = b.Width * 3;
for(int y=0;y<b.Height;++y)
{
for(int x=0; x < nWidth; ++x )
{
p[0] = (byte)(255-p[0]);
++p;
}
p += nOffset;
}
}
b.UnlockBits(bmData);
return true;
}
--------------------编程问答-------------------- 楼上的这个我懂,关键是我上面说的如何嵌入和提取
补充:.NET技术 , C#