如何在运行时更改Image的颜色

我想知道有什么方法可以在运行时更改图像颜色。 例如,假设我正在将JPG绑定到ASP.Net的Image控件。 接下来我有一个下拉列表,它给了我各种颜色选项,如红色,格力等。 我现在想将图像的颜色更改为droprdown列表中选择的颜色。

下面是一个加载JPEG的代码示例,将图像中的任何红色像素更改为蓝色,然后在图片框中显示位图:

Bitmap bmp = (Bitmap)Bitmap.FromFile("image.jpg"); for (int x = 0; x < bmp.Width; x++) { for (int y = 0; y < bmp.Height; y++) { if (bmp.GetPixel(x, y) == Color.Red) { bmp.SetPixel(x, y, Color.Blue); } } } pictureBox1.Image = bmp; 

警告:GetPixel和SetPixel非常慢。 如果您的图像很大和/或性能是一个问题,那么在.NET中读取和写入像素的方法要快得多,但这需要更多的工作。

您也可以尝试使用web(asp.net),您可以忽略逻辑,但可以看到getpixel和setpixel正在做什么

  public string FileUpload( HttpPostedFileBase file ) { Bitmap bmp = new Bitmap(file.InputStream); string valid = ""; for(int i = 0; i < bmp.Width; i++) { for(int j = 0; j < bmp.Height; j++) { if(bmp.GetPixel(i , j).B < 20) { if(bmp.GetPixel(i , j).B == bmp.GetPixel(i , j).G && bmp.GetPixel(i , j).B == bmp.GetPixel(i , j).R) { valid = valid + bmp.GetPixel(i , j). + "
"; bmp.SetPixel(i , j , Color.DarkGreen); } } } } SaveImage(bmp); return valid; } private void SaveImage( Bitmap newbmp ) { string path = Path.Combine(Server.MapPath("~/Images") , "ScaledImage.jpeg"); newbmp.Save(path , System.Drawing.Imaging.ImageFormat.Jpeg); }

在这个问题上我也遇到了麻烦。 之后基于一些信息。 我手动编写代码。现在效果很好。 如果你想检查。你可以使用它。

用于在C#.net中运行时更改背景图像的代码

你可以使用这个代码。 也就是说,==>

 string str; OpenFileDialog od = new OpenFileDialog(); if (od.ShowDialog() == DialogResult.OK) { str = od.FileName; this.BackgroundImage=Image.FromFile(str); }