我想知道有什么方法可以在运行时更改图像颜色。 例如,假设我有一个JPG绑定到ASP.Net的Image控件。接下来我有一个下拉列表,它给了我各种颜色选项,如红色,格力等。我现在想要将图像的颜色更改为droprdown列表中选择的颜色。
答案 0 :(得分: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 :(得分:0)
你也尝试这个用于web(asp.net),你可以忽略逻辑,但可以看到getpixel&amp; 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);
}
答案 2 :(得分:-1)
我在这个问题上也遇到了麻烦。之后基于一些信息。我手动编写代码。现在效果很好。如果你想检查。你可以使用它。
用于在C#.net
中运行时更改背景图像的代码你可以使用这个代码。也就是说,==&gt;
string str;
OpenFileDialog od = new OpenFileDialog();
if (od.ShowDialog() == DialogResult.OK)
{
str = od.FileName;
this.BackgroundImage=Image.FromFile(str);
}