C# 不使用对话框保存图像
当用户在我的表单上按Save Team时,我无法将用户上载的图像保存到我的徽标文件 为了让您了解我提供的应用程序的功能,在按下add team时,所有文本框数据都会写入文本文件,我希望图像自动保存到预定义的文件夹中,但是每当我按下save时,都会出现GDI++错误 在阅读了web上的一些旧线程之后,我发现它可能是由一些因素引起的,比如文件权限、文件大小、文件名,甚至是一个打开的流 以下是我当前用于保存文件的代码,提示错误:C# 不使用对话框保存图像,c#,C#,当用户在我的表单上按Save Team时,我无法将用户上载的图像保存到我的徽标文件 为了让您了解我提供的应用程序的功能,在按下add team时,所有文本框数据都会写入文本文件,我希望图像自动保存到预定义的文件夹中,但是每当我按下save时,都会出现GDI++错误 在阅读了web上的一些旧线程之后,我发现它可能是由一些因素引起的,比如文件权限、文件大小、文件名,甚至是一个打开的流 以下是我当前用于保存文件的代码,提示错误: private void btnAddTeam_Click(o
private void btnAddTeam_Click(object sender, EventArgs e)
{
//VALIDATION FOR TEXT FILE AND OTHER STUFF HERE...
//SAVE THE IMAGE FILE
string filePath = picTeamLogo.ImageLocation;
Image tempImage = Image.FromFile(filePath);
tempImage.Save(@"../logos/");
}
如果您正在查看屏幕截图,请不要被arsenal.png弄糊涂。我知道这不是完整的文件路径,它的转换是用另一种方法处理的,因为只需要将文件名写入文本文件
如果有人对我的错误有任何想法,那么请告诉我正确的方向,模糊的错误,比如我刚刚收到的GDI错误,真是令人头痛
亚历克斯。类似的问题,请参阅我之前的帖子 流保持锁定-您可以使用内存流作为临时位置,然后保存 当位图对象或图像对象是由 文件,则该文件在对象的生存期内保持锁定。作为一个 因此,您无法更改图像并将其保存回同一文件 它起源于哪里。
或者另一种方法是通过MemoryStream将图像加载到图像中,这样流就不会首先被锁定 有关类似的问题,请参阅我之前的帖子 流保持锁定-您可以使用内存流作为临时位置,然后保存 当位图对象或图像对象是由 文件,则该文件在对象的生存期内保持锁定。作为一个 因此,您无法更改图像并将其保存回同一文件 它起源于哪里。
或者另一种方法是通过MemoryStream将图像加载到图像中,这样流就不会首先被锁定 这是因为您没有为save函数指定文件名 看看这个:
string filePath = picTeamLogo.ImageLocation;
FileInfo fi = new FileInfo(filePath);
Image tempImage = Image.FromFile(fi.FullName);
tempImage.Save(@"../logo/" + fi.Name);
现在它可以正常工作了这是因为您没有为保存函数指定文件名 看看这个:
string filePath = picTeamLogo.ImageLocation;
FileInfo fi = new FileInfo(filePath);
Image tempImage = Image.FromFile(fi.FullName);
tempImage.Save(@"../logo/" + fi.Name);
现在它可以正常工作了试试这个方法
public void storeFile(FileUpload File, string dirName)
{
if (!Directory.Exists(MapPath("~/uploads/" + dirName)))
{
Directory.CreateDirectory(MapPath("~/uploads/" + dirName));
}
string saveLocation = MapPath("~/uploads/" + dirName + "/" + Path.GetFileName(File.FileName));
File.SaveAs(saveLocation);
}
试试这个方法
public void storeFile(FileUpload File, string dirName)
{
if (!Directory.Exists(MapPath("~/uploads/" + dirName)))
{
Directory.CreateDirectory(MapPath("~/uploads/" + dirName));
}
string saveLocation = MapPath("~/uploads/" + dirName + "/" + Path.GetFileName(File.FileName));
File.SaveAs(saveLocation);
}
您能为异常提供stacktrace吗?看起来您需要指定一个文件名,而不仅仅是一个目录。@/logos/test.bmp,例如。可能重复感谢Kirk我将查看该帖子,在发布我自己的帖子之前,我尝试搜索其他帖子,但是我还没有看到那个帖子!您能为异常提供stacktrace吗?看起来您需要指定一个文件名,而不仅仅是一个目录。@/logos/test.bmp,例如。可能重复感谢Kirk我将查看该帖子,在发布我自己的帖子之前,我尝试搜索其他帖子,但是我还没有看到那个帖子!