使用asp.net改变图片颜色
最近奇葩经理提出了奇葩的需求,要能在网站上改变图片的颜色,比如灰色的变成彩色,彩色的变成灰色,尼玛楼主的感受你们不懂!于是有了下面的代码。。。
用法:调用update_pixelColor方法并传参数即可
C#代码
- #region改变图片颜色
- ///<summary>
- ///改变图片的颜色
- ///</summary>
- ///<paramname="filePath">图片的完整路径</param>
- ///<paramname="colorIndex">改变的颜色,true为灰色,false为彩色</param>
- publicvoidupdate_pixelColor(stringfilePath,boolcolorIndex)
- {
- Bitmapbmp=newBitmap(Bitmap.FromFile(filePath));
- intvalue=0;
- for(inti=0;i<bmp.Height;i++)
- {
- for(intj=0;j<bmp.Width;j++)
- {
- if(colorIndex)
- value=this.GetGrayNumColor(bmp.GetPixel(j,i));
- else
- value=this.GetHongNumColor(bmp.GetPixel(j,i));
- bmp.SetPixel(j,i,Color.FromArgb(value,value,value));
- }
- }
- bmp.Save(filePath);
- }
- ///<summary>
- ///获取彩色单点像素
- ///</summary>
- ///<paramname="posClr">单点像素</param>
- ///<returns>int</returns>
- PRivateintGetHongNumColor(ColorposClr)
- {
- return(posClr.R*19595+posClr.G*38469+posClr.B*7472)>>16;
- }
- ///<summary>
- ///获取灰色单点像素
- ///</summary>
- ///<paramname="posClr">单点像素</param>
- ///<returns>Color</returns>
- privateintGetGrayNumColor(ColorposClr)
- {
- //要改变ARGB
- return(posClr.R*19595+posClr.G*38469+posClr.B*7472)>>16;
- }
- #endregion改变图片颜色
这个转换的比较慢 看到编程人生上有关于这方面的总结,哪天来研究一下