Как изменить цвет изображения во время выполнения - PullRequest
3 голосов
/ 20 декабря 2008

Я хотел бы знать, есть ли способ, которым мы можем изменить цвет изображения во время выполнения. например, скажем, у меня привязка JPG к элементу управления изображения ASP.Net. Затем у меня есть выпадающий список, который дает мне различные варианты цвета, такие как красный, зеленый и т. Теперь я хотел бы изменить цвет изображения на цвет, выбранный в выпадающем списке.

Ответы [ 3 ]

12 голосов
/ 20 декабря 2008

Вот пример кода, который загружает 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, но это немного больше работы.

0 голосов
/ 17 августа 2013

Вы также можете попробовать это для веб (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). + "<br/>";
                 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);
  }
0 голосов
/ 19 октября 2012

У меня тоже проблемы с этим вопросом. после этого на основании некоторой информации. Я написал код вручную. Теперь он работает хорошо. Если вы хотите проверить. Вы можете использовать его.

код для изменения фонового изображения во время выполнения в C # .net

Вы можете просто использовать этот код. То есть ==>

string str; 
OpenFileDialog od = new OpenFileDialog(); 
if (od.ShowDialog() == DialogResult.OK) 
{ 
    str = od.FileName;
    this.BackgroundImage=Image.FromFile(str); 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...