使用asp.net改变图片颜色如灰色的变成彩色
程序员文章站
2024-02-21 12:08:04
最近奇葩经理提出了奇葩的需求,要能在网站上改变图片的颜色,比如灰色的变成彩色,彩色的变成灰色,尼玛楼主的感受你们不懂!于是有了下面的代码。
用法:调用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 改变图片颜色