C# 不使用对话框保存图像

C# 不使用对话框保存图像,c#,C#,当用户在我的表单上按Save Team时,我无法将用户上载的图像保存到我的徽标文件 为了让您了解我提供的应用程序的功能,在按下add team时,所有文本框数据都会写入文本文件,我希望图像自动保存到预定义的文件夹中,但是每当我按下save时,都会出现GDI++错误 在阅读了web上的一些旧线程之后,我发现它可能是由一些因素引起的,比如文件权限、文件大小、文件名,甚至是一个打开的流 以下是我当前用于保存文件的代码,提示错误: private void btnAddTeam_Click(o

当用户在我的表单上按Save Team时,我无法将用户上载的图像保存到我的徽标文件

为了让您了解我提供的应用程序的功能,在按下add team时,所有文本框数据都会写入文本文件,我希望图像自动保存到预定义的文件夹中,但是每当我按下save时,都会出现GDI++错误

在阅读了web上的一些旧线程之后,我发现它可能是由一些因素引起的,比如文件权限、文件大小、文件名,甚至是一个打开的流

以下是我当前用于保存文件的代码,提示错误:

     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我将查看该帖子,在发布我自己的帖子之前,我尝试搜索其他帖子,但是我还没有看到那个帖子!