当前位置: 移动技术网 > IT编程>开发语言>.net > 使用asp.net改变网页上图片颜色比如灰色变彩色

使用asp.net改变网页上图片颜色比如灰色变彩色

2017年12月12日  | 移动技术网IT编程  | 我要评论

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

用法:调用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 改变图片颜色

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网