使用asp.net改变网页上图片颜色比如灰色变彩色
最近奇葩经理提出了奇葩的需求,要能在网站上改变图片的颜色,比如灰色的变成彩色,彩色的变成灰色,尼玛楼主的感受你们不懂!于是有了下面的代码。。。
用法:调用update_pixelColor方法并传参数即可
#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改变图片颜色