簡體   English   中英

C#不使用對話框保存圖像

[英]C# Save image without using Dialog

當用戶在表單上按下“保存團隊”時,我無法將用戶上傳的圖像保存到我的“徽標”文件中。

為了讓您品嘗一下應用程序的功能,我在此處提供了一個屏幕截圖 ,按添加團隊后,所有文本框數據都將寫入文本文件,並且我希望圖像自動保存到預定義的文件夾“徽標”中。每當我按保存時,我都會收到GDI ++錯誤。

閱讀完網絡上的一些舊線程后,我發現它可能是由諸如文件許可權,文件大小,文件名甚至是開放流之類的幾件事引起的。

以下是我當前用於保存文件的代碼,該文件提示錯誤:

     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之類的模糊錯誤實在令人頭疼!


亞歷克斯。

試試這個方法

 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);


    }

有關類似問題,請參閱我的早期文章。

GDI +在Bitmap.Save方法中發生一般錯誤

流保持鎖定狀態-您可以將內存流用作臨時位置,然后保存。

從文件構造位圖對象或圖像對象時,文件在對象的生存期內保持鎖定狀態。 因此,您無法更改圖像並將其保存回其原始位置。 http://support.microsoft.com/?id=814675

string outputFileName = "...";
using (MemoryStream memory = new MemoryStream())
{
    using (FileStream fs = new FileStream(outputFileName, FileMode.Create, FileAccess.ReadWrite))
    {
        tempImage.Save(memory, ImageFormat.Jpeg);
        // memory.ToStream(fs) // I think the same
        byte[] bytes = memory.ToArray();
        fs.Write(bytes, 0, bytes.Length);
    }
}

或者可以選擇通過MemoryStream將圖像加載到圖像中-這樣一來,流就不會被鎖定...

那是因為您沒有指定保存功能的文件名!

看看這個 :

string filePath = picTeamLogo.ImageLocation;
FileInfo fi = new FileInfo(filePath);
Image tempImage = Image.FromFile(fi.FullName);
tempImage.Save(@"../logo/" + fi.Name);

現在它可以正常工作

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM