CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

求C#亮度算法

楼主tayuly(告诉我)2005-10-27 13:02:25 在 .NET技术 / C# 提问

我想处理一张jpg图片的亮度,应该怎么做啊? 问题点数:80、回复次数:6Top

1 楼xinling195(闲趣)回复于 2005-10-27 13:04:02 得分 0

看一眼:http://www.sz3000.com/index.htm?QQ=822982Top

2 楼s5689412(华君)回复于 2005-10-27 13:17:32 得分 80

lz真是让人怎么说呢。  
  http://community.csdn.net/Expert/topic/4348/4348444.xml?temp=.7795374  
  给你提供了那么好的参考资料,非的要一个一个代码追着要。  
  昨天给了你对比度的函数,今天又要亮度的代码,明天也许就是灰度了。  
  唉......  
   
  public   static   bool   GrayScale(Bitmap   b)  
  {  
  //   GDI+   still   lies   to   us   -   the   return   format   is   BGR,   NOT   RGB.  
  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;  
   
  byte   red,   green,   blue;  
   
  for(int   y=0;y<b.Height;++y)  
  {  
  for(int   x=0;   x   <   b.Width;   ++x   )  
  {  
  blue   =   p[0];  
  green   =   p[1];  
  red   =   p[2];  
   
  p[0]   =   p[1]   =   p[2]   =   (byte)(.299   *   red   +   .587   *   green   +   .114   *   blue);  
   
  p   +=   3;  
  }  
  p   +=   nOffset;  
  }  
  }  
   
  b.UnlockBits(bmData);  
   
  return   true;  
  }Top

3 楼s5689412(华君)回复于 2005-10-27 13:21:48 得分 0

啊,发错了,说着灰度,就给发成灰度的代码了...  
   
  BTW:为什么不喜欢好好看看别人的回复呢?只想着要代码,解决问题了事...  
   
  public   static   bool   Brightness(Bitmap   b,   int   nBrightness)  
  {  
  if   (nBrightness   <   -255   ||   nBrightness   >   255)  
  return   false;  
   
  //   GDI+   still   lies   to   us   -   the   return   format   is   BGR,   NOT   RGB.  
  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;  
   
  int   nVal   =   0;  
   
  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   )  
  {  
  nVal   =   (int)   (p[0]   +   nBrightness);  
   
  if   (nVal   <   0)   nVal   =   0;  
  if   (nVal   >   255)   nVal   =   255;  
   
  p[0]   =   (byte)nVal;  
   
  ++p;  
  }  
  p   +=   nOffset;  
  }  
  }  
   
  b.UnlockBits(bmData);  
   
  return   true;  
  }Top

4 楼CruelYoung123(向牛人们学习@HOHO~~~)回复于 2005-10-27 13:41:01 得分 0

不错,呵呵Top

5 楼fanweiwei(黑暗凝聚力量,堕落方能自由)回复于 2005-10-27 14:05:14 得分 0

http://www.sz3000.com/index.htm?QQ=586852Top

6 楼tayuly(告诉我)回复于 2005-10-28 08:35:23 得分 0

谢谢s5689412(华君),我的E文不好,因为以前没接触过图像处理这一块,这方面的资料又不多,确实没搞明白,最后还是谢谢你了~Top

相关问题

  • 求一c#算法
  • 求一c语言算法
  • 求教简单c算法
  • 求解C++算法题目
  • 求解C++算法题目
  • ???求一个算法C#:??
  • 求一个c#算法
  • C#的soap压缩算法
  • HELP!C#算法问题
  • C++实现,求0ms算法

关键词

  • gdi+
  • bmdata
  • stride
  • 亮度
  • noffset
  • scan
  • nval
  • format
  • byte
  • width

得分解答快速导航

  • 帖主:tayuly
  • s5689412

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo