用ps如何做短视频网站,什么是云速建站服务,东莞58同城招聘网,做韩国网站待处理的图片#xff0c;其特征是包含有限数量颜色#xff0c;不同的颜色相互交叉使用#xff0c;相同颜色并未完全连贯#xff0c;需要将图片中的指定颜色替换为另一颜色。虽然很多图片处理工具都支持类似操作#xff0c;最后还是自己动手编写简单的处理程序。 程序的… 待处理的图片其特征是包含有限数量颜色不同的颜色相互交叉使用相同颜色并未完全连贯需要将图片中的指定颜色替换为另一颜色。虽然很多图片处理工具都支持类似操作最后还是自己动手编写简单的处理程序。 程序的功能主要包括1一对一颜色替换仅替换颜色RGB值等于指定颜色的像素2范围替换替换颜色RGB值与指定颜色相距不超过指定距离的像素。 获取图片像素和设置图片像素使用的是Bitmap类的GetPixel和SetPixel函数计算像素与像素的距离使用的是三维坐标距离计算公式如下图所示参考文献1。 关键代码如下所示
Bitmap curImage picSrcImage.Image as Bitmap;
Color curColor;//源颜色待替换颜色
Color colorSource Color.FromArgb(Convert.ToByte(nudR.Value), Convert.ToByte(nudG.Value), Convert.ToByte(nudB.Value));
//目标颜色
Color colorDest Color.FromArgb(Convert.ToByte(nudDR.Value), Convert.ToByte(nudDG.Value), Convert.ToByte(nudDB.Value));//一对一替换像素
for (int i 0; i curImage.Width; i)
{for (int j 0; j curImage.Height; j){curColor curImage.GetPixel(i, j);if ((curColor.R Convert.ToByte(nudR.Value)) (curColor.G Convert.ToByte(nudG.Value)) (curColor.B Convert.ToByte(nudB.Value))){curImage.SetPixel(i, j, colorDest);}}
}//范围替换像素
for (int i 0; i curImage.Width; i)
{for (int j 0; j curImage.Height; j){curColor curImage.GetPixel(i, j);if (CalculateDistance(curColor, colorSource) Convert.ToDouble(nudRange.Value)){curImage.SetPixel(i, j, colorDest);}}
}最后是程序运行效果导入原始图片后将右上角的BALL字符内部的红色替换为蓝色如下图所示。 参考文献 [1]https://zhidao.baidu.com/question/1312602947632691539.html