在我的 Windows 应用程序中,我有一个
PictureBox
和一个 Button
控件。我想从按钮的 OnClick
事件加载用户的图像文件,并将该图像文件保存在我的项目中名为“proImg”的文件夹中。然后我想在 PictureBox
中显示该图像。
我已经编写了这段代码,但它不起作用:
OpenFileDialog opFile = new OpenFileDialog();
opFile.Title = "Select a Image";
opFile.Filter = "jpg files (*.jpg)|*.jpg|All files (*.*)|*.*";
if (opFile.ShowDialog() == DialogResult.OK)
{
try
{
string iName = opFile.FileName;
string filepath = "~/images/" + opFile.FileName;
File.Copy(iName,Path.Combine("~\\ProImages\\", Path.GetFileName(iName)));
picProduct.Image = new Bitmap(opFile.OpenFile());
}
catch (Exception exp)
{
MessageBox.Show("Unable to open file " + exp.Message);
}
}
else
{
opFile.Dispose();
}
无法将图像保存在“proImg”文件夹中。
实际上
string iName = opFile.FileName;
并没有给你完整的路径。您必须使用 SafeFileName
来代替。我假设您也希望您的文件夹位于 exe
目录中。请参考我的修改:
OpenFileDialog opFile = new OpenFileDialog();
opFile.Title = "Select a Image";
opFile.Filter = "jpg files (*.jpg)|*.jpg|All files (*.*)|*.*";
string appPath = Path.GetDirectoryName(Application.ExecutablePath) + @"\ProImages\"; // <---
if (Directory.Exists(appPath) == false) // <---
{ // <---
Directory.CreateDirectory(appPath); // <---
} // <---
if (opFile.ShowDialog() == DialogResult.OK)
{
try
{
string iName = opFile.SafeFileName; // <---
string filepath = opFile.FileName; // <---
File.Copy(filepath, appPath + iName); // <---
picProduct.Image = new Bitmap(opFile.OpenFile());
}
catch (Exception exp)
{
MessageBox.Show("Unable to open file " + exp.Message);
}
}
else
{
opFile.Dispose();
}
您应该为
File.Copy
方法提供正确的目标路径。 “~\ProImages...”不是正确的路径。此示例会将选定的图片复制到项目 bin 文件夹内的 ProImages 文件夹中:
string iName = opFile.FileName;
File.Copy(iName, Path.Combine(@"ProImages\", Path.GetFileName(iName)));
路径相对于当前可执行文件的位置,除非您提供完整路径(即@“D:\ ProImages”)。
如果您没有手动创建文件夹并希望程序生成
ProImages
文件夹(如果尚不存在):
string iName = opFile.FileName;
string folder = @"ProImages\";
var path = Path.Combine(folder, Path.GetFileName(iName))
if (!Directory.Exists(folder))
{
Directory.CreateDirectory(folder);
}
File.Copy(iName, path);
PS:请注意使用 verbatim (
@
) 自动转义字符串中的反斜杠 (\
) 字符。在声明表示路径的字符串时逐字使用是常见的做法。
尝试使用 picturebox.Image.Save 函数。在我的程序中它正在工作 PictureBox.Image.Save(您的目录,ImageFormat.Jpeg)
示例 pictureBox2.Image.Save(@"D:/CameraImge/"+文件夹名称+"/"+编号+".jpg", ImageFormat.Jpeg);
你写这样的代码。
string appPath = Path.GetDirectoryName(Application.ExecutablePath) +foldername ;
pictureBox1.Image.Save(appPath + @"\" + filename + ".jpg", ImageFormat.Jpeg);
有什么解决方案吗?想要实现一个项目,需要保护照片,使我的项目和环境像 BD 一样,但没有任何问题。 Agradecería se me dicen se se helló la solución y cuál fue.