C# 如何把 图处理成 反相呢?????????????????????????????????????????????????????????

生财 2008-07-09 10:13:50
C# 如何把 图处理成 反相呢?????????????????????????????????????????????????????????

和 pHOTOSHOP 裏的 反向功能一樣
...全文
239 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
h_w_king 2008-07-10
  • 打赏
  • 举报
回复
private void fx(Bitmap g)
{
for(int i=0;i<g.Width;i++)
for (int j = 0; j < g.Height; j++)
{
Color c = g.GetPixel(i, j);
Color cc=Color.FromArgb(255-c.R,255-c.G,255-c.B);
g.SetPixel(i,j,cc);
}

}
Code従業員 2008-07-10
  • 打赏
  • 举报
回复
可能我笨,LS好像是说把图片倒过来吧?
生财 2008-07-10
  • 打赏
  • 举报
回复
Bitmap 格式的
生财 2008-07-10
  • 打赏
  • 举报
回复
謝謝樓上

這是我寫的可以反相的代碼

        /// <summary>
/// 反相图片
/// 2008-7-9
/// daonidedie
/// </summary>
public void Reverse()
{
BitmapData bmData = bmpobj.LockBits(new Rectangle(0, 0, bmpobj.Width, bmpobj.Height),
ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);
int stride = bmData.Stride;
System.IntPtr Scan0 = bmData.Scan0;
unsafe
{
byte* p = (byte*)(void*)Scan0;
int nOffset = stride - bmpobj.Width * 3;
int nWidth = bmpobj.Width * 3;
for (int y = 0; y < bmpobj.Height; ++y)
{
for (int x = 0; x < nWidth; ++x)
{
p[0] = (byte)(255 - p[0]);
++p;
}
p += nOffset;
}
}
bmpobj.UnlockBits(bmData);
}
nodman 2008-07-10
  • 打赏
  • 举报
回复
你的图是什么格式,Bitmap?
从原理上说,图像反色就是求R G B这3个分量与255的差,的绝对值
R' = |255 - R|
B' = |255 - B|
G' = |255 - G|

但是要对应到实际操作,要看具体Bitmap的颜色格式,比如是16位还是24位还是32位
颜色空间是RGB,还是YUV还是灰度还是什么。
如果是索引颜色(Indexed),那就更麻烦一点,要改写Palette

111,093

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧