2008-12-20 2 views
3

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

+0

Вам нужно сказать, больше о том, что вы делаете. «Образ» ни для кого не означает ничего. –

+0

У вас есть фотография, которую вы хотите манипулировать, или это потому, что вам нужно проиллюстрировать выбранный цвет? Что я пытаюсь выяснить, если вы хотите сделать снимок, скажем, собака, более зеленая, когда выбран зеленый цвет. Или вы хотите просто показать изображение зеленого цвета. –

+0

Мне кажется, что OP хочет изменить цвет клиентской стороны «изображения». Не могли бы вы лучше определить, что означает «образ» в этом контексте? Вы имеете в виду JPG, границу/фон JPG? –

ответ

12

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

+1

Сравнение результатов GetPixel с цветом не всегда работает. Вы должны сравнить результаты ToArbg(), как показано здесь: http://stackoverflow.com/questions/7464994/how-to-compare-a-color-by-the-getpixel-method-and-a-color-passed- in-a-method-lik – FoppyOmega

+0

На самом деле, я не уверен, что мой код будет * работать *. Я думаю, что даже если пиксельный цвет растрового изображения имеет те же самые значения ARGB, что и Color.Red, он все равно не будет эквивалентен Color.Red. – MusiGenesis

-1

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

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

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

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

Вы также можете попробовать это для веб (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); 
    } 
Смежные вопросы