我尝试使用图片框来比较两张图片,但我遇到了一个问题:如何将所选图片名称作为参数传递给函数作为字符串?
我将图片路径和名称保存为string name1和string name2,但当我将它们作为参数传递时,我遇到了一个问题。
下面是我的代码。请告诉我我哪里错了。
private void pictureBox1_Click(object sender, EventArgs e)
{
OpenFileDialog ofd1 = new OpenFileDialog();
ofd1.Title = "Select User Profile Image";
ofd1.Filter = "Image File(*.png;*.jpg;*.bmp;*.gif)|*.png;*.jpg;*.bmp;*.gif";
if (ofd1.ShowDialog() == DialogResult.OK)
{
pictureBox1.Image = new Bitmap(ofd1.FileName);
string name1 = ofd1.FileName;
}
}
private void button1_Click(object sender, EventArgs e)
{
Compare(name1,name2);
}
public void Compare(string bmp1, string bmp2, byte threshold = 3)
{
Bitmap firstBmp = (Bitmap)Image.FromFile(bmp1);
Bitmap secondBmp = (Bitmap)Image.FromFile(bmp2);
firstBmp.GetDifferenceImage(secondBmp, true);
string result = string.Format("Difference: {0:0.0} %", firstBmp.PercentageDifference(secondBmp, threshold) * 100);
}发布于 2016-05-20 17:34:45
您可以在pictureBox1_Click()中的if语句中创建变量name1。您应该创建类级别变量以在button1_Click()中使用它,因为name1仅在if块中可见:
public YourClass
{
string name1 = String.Empty:
//..... your code
private void pictureBox1_Click(object sender, EventArgs e)
{
OpenFileDialog ofd1 = new OpenFileDialog();
ofd1.Title = "Select User Profile Image";
ofd1.Filter = "Image File(*.png;*.jpg;*.bmp;*.gif)|*.png;*.jpg;*.bmp;*.gif";
if (ofd1.ShowDialog() == DialogResult.OK)
{
pictureBox1.Image = new Bitmap(ofd1.FileName);
name1 = ofd1.FileName;
}
}
private void button1_Click(object sender, EventArgs e)
{
Compare(name1,name2);
}
public void Compare(string bmp1, string bmp2, byte threshold = 3)
{
Bitmap firstBmp = (Bitmap)Image.FromFile(bmp1);
Bitmap secondBmp = (Bitmap)Image.FromFile(bmp2);
firstBmp.GetDifferenceImage(secondBmp, true);
string result = string.Format("Difference: {0:0.0} %", firstBmp.PercentageDifference(secondBmp, threshold) * 100);
}
}如果你以同样的方式创建name2,你也应该让它成为类级别的变量。
发布于 2016-05-20 17:35:08
您可以在Form中声明一个成员变量来保存文件路径:
public partial class YourForm : Form
{
private string _imagePath1;
private string _imagePath2;
private void pictureBox1_Click(object sender, EventArgs e)
{
OpenFileDialog ofd1 = new OpenFileDialog();
// ... your code
if (ofd1.ShowDialog() == DialogResult.OK)
{
pictureBox1.Image = new Bitmap(ofd1.FileName);
// SAVE PATH TO CLASS MEMBER
_imagePath1 = ofd1.FileName;
}
}
private void button1_Click(object sender, EventArgs e)
{
// USE CLASS MEMBERS
Compare(_imagePath1, _imagePath2);
}
} 发布于 2016-05-20 17:49:20
我认为下面的URL对你有帮助
http://www.c-sharpcorner.com/uploadfile/prathore/image-comparison-using-C-Sharp
https://stackoverflow.com/questions/37342979
复制相似问题