欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

使用asp.net改变图片颜色如灰色的变成彩色

程序员文章站 2024-02-24 12:02:43
最近奇葩经理提出了奇葩的需求,要能在网站上改变图片的颜色,比如灰色的变成彩色,彩色的变成灰色,尼玛楼主的感受你们不懂!于是有了下面的代码。 用法:调用update_pix...

最近奇葩经理提出了奇葩的需求,要能在网站上改变图片的颜色,比如灰色的变成彩色,彩色的变成灰色,尼玛楼主的感受你们不懂!于是有了下面的代码。

用法:调用update_pixelcolor方法并传参数即可

#region 改变图片颜色 

/// <summary> 
/// 改变图片的颜色 
/// </summary> 
/// <param name="filepath">图片的完整路径</param> 
/// <param name="colorindex">改变的颜色,true为灰色,false为彩色</param> 
public void update_pixelcolor(string filepath, bool colorindex) 
{ 
bitmap bmp = new bitmap(bitmap.fromfile(filepath)); 

int value = 0; 

for (int i = 0; i < bmp.height; i++) 
{ 
for (int j = 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> 
/// <param name="posclr">单点像素</param> 
/// <returns>int</returns> 
private int gethongnumcolor(color posclr) 
{ 
return (posclr.r * 19595 + posclr.g * 38469 + posclr.b * 7472) >> 16; 
} 

/// <summary> 
/// 获取灰色单点像素 
/// </summary> 
/// <param name="posclr">单点像素</param> 
/// <returns>color</returns> 
private int getgraynumcolor(color posclr) 
{ 
//要改变argb 
return (posclr.r * 19595 + posclr.g * 38469 + posclr.b * 7472) >> 16; 
} 

#endregion 改变图片颜色