C# 遮盖/涂黑文件夹中图像的特定区域(c)
最近我创建了一个小应用程序,在这里我选择了一个图像,并通过提供坐标来遮罩/涂黑它的区域。根据坐标,它覆盖的图像部分可以在这里看到红色。 代码如下:C# 遮盖/涂黑文件夹中图像的特定区域(c),c#,image,masking,C#,Image,Masking,最近我创建了一个小应用程序,在这里我选择了一个图像,并通过提供坐标来遮罩/涂黑它的区域。根据坐标,它覆盖的图像部分可以在这里看到红色。 代码如下: private void Mask_button_Click(object sender, EventArgs e) { if (textBox3.Text.Trim() == "" || textBox4.Text.Trim() == "" || textBox5.Text.Trim() == "" || text
private void Mask_button_Click(object sender, EventArgs e)
{
if (textBox3.Text.Trim() == "" || textBox4.Text.Trim() == "" || textBox5.Text.Trim() == "" || textBox6.Text.Trim() == "" || textBox7.Text.Trim() == "" || textBox8.Text.Trim() == "" || textBox9.Text.Trim() == "" || textBox10.Text.Trim() == "" || textBox11.Text.Trim() == "" || textBox12.Text.Trim() == "" || textBox13.Text.Trim() == "" || textBox3.Text.Trim() == "")
{
MessageBox.Show("All value in above text boxes are compulsory");
return;
}
if(pictureBox1.Image==null)
{
MessageBox.Show("No Image Selected");
return;
}
using (var g = Graphics.FromImage(pictureBox1.Image))
{
g.FillRectangle(Brushes.Tomato, Int32.Parse(textBox3.Text), Int32.Parse(textBox4.Text), Int32.Parse(textBox5.Text), Int32.Parse(textBox6.Text));
g.FillRectangle(Brushes.Tomato, Int32.Parse(textBox7.Text), Int32.Parse(textBox8.Text), Int32.Parse(textBox9.Text), Int32.Parse(textBox10.Text));
g.FillRectangle(Brushes.Tomato, Int32.Parse(textBox11.Text), Int32.Parse(textBox12.Text), Int32.Parse(textBox13.Text), Int32.Parse(textBox14.Text));
pictureBox1.Invalidate();
}
}
现在我想扩展它,我不想选择图像,而是想选择文件夹
a1a2
B B1 B2
A文件夹和B文件夹中有许多可用的图像文件。
一旦我提供了坐标,我想一次屏蔽所有的图像,就像我在上面做的一样
代码更改:
私有无效幻灯片按钮单击对象发送者,事件参数e
{
var directory=newDirectoryInfo@D:\2图像;
var allowedExtensions=新字符串[]{.jpg.bmp.png}
var imageFiles = from file in directory.EnumerateFiles("*", SearchOption.AllDirectories)
where allowedExtensions.Contains(file.Extension.ToLower())
select file;
List<string> new1 = new List<string>();
foreach (var file in imageFiles)
new1.Add(file.ToString());
for (int i = 0; i < new1.Count; i++)
{
Image bitmap = Image.FromFile(@"D:\2Images\" + new1[i]);
byte[] bytes = System.IO.File.ReadAllBytes(@"D:\2Images\" + new1[i]);
System.IO.MemoryStream ms = new System.IO.MemoryStream(bytes);
pictureBox1.Image = Image.FromStream(ms);
bm = new Bitmap(pictureBox1.Image);
var g = Graphics.FromImage(bm);
g.FillRectangle(Brushes.Tomato, Int32.Parse(textBox3.Text), Int32.Parse(textBox4.Text), Int32.Parse(textBox5.Text), Int32.Parse(textBox6.Text));
g.FillRectangle(Brushes.Tomato, Int32.Parse(textBox7.Text), Int32.Parse(textBox8.Text), Int32.Parse(textBox9.Text), Int32.Parse(textBox10.Text));
g.FillRectangle(Brushes.Tomato, Int32.Parse(textBox11.Text), Int32.Parse(textBox12.Text), Int32.Parse(textBox13.Text), Int32.Parse(textBox14.Text));
pictureBox1.Invalidate();
bm.Save(@"D:\3Images\" + new1[i]);
}
}
问题是什么?要展开@Yegor的问题-为什么不简单地循环遍历文件夹中的所有文件并对每个文件执行上述过程?让我试试,谢谢Nissim。这只是为了显示吗?坐标总是一样的吗?我提供了坐标并屏蔽了此图像上的三个位置,它可以扩展到任何数字rs.屏蔽后,我将图像保存到一个文件夹位置,并与另一个已进行类似屏蔽的图像进行比较,但使用另一个应用程序