2012-04-29 31 views
0

我有一個包含以下列的數據庫表:idCompany:INT,數據:LONGBLOB,擴展名:VARCHAR(5),名稱:VARCHAR(45)。如何從數據庫讀取圖形圖像並將其作爲文件粘貼到剪貼板?

我已經succeded使用實體框架,堅持一個圖像到MySQL:

public static void PersistCurrentImage(Company company, FileStream logoStream, MyEntities context) 
    { 
     if (logoStream != null) 
     { 
      //reading 
      byte[] data = new byte[logoStream.Length]; 
      logoStream.Read(data, 0, Convert.ToInt32(logoStream.Length)); 
      logoStream.Close(); 

      //setting image 
      company.CompanyLogo = new CompanyLogo(); 
      company.CompanyLogo.Image = data; 
      company.CompanyLogo.Extension = Path.GetExtension(logoStream.Name); 
      company.CompanyLogo.Name = Path.GetFileName(logoStream.Name); 

      context.SaveChanges(); 

     } 
    } 

我想什麼做的是從數據庫中獲取的圖像,使一個文件出來,並把它放在剪貼板,所以稍後我可以粘貼文件。

我已經尋找了一個小時的解決方案,但我似乎可以找到它。預先感謝您

回答

0

好吧,我已經解決了它。首先將圖像寫入硬盤,然後將其複製到剪貼板。

public static void CopyLogo(Company company) 
    { 
     if (company.CompanyLogo != null) 
     { 
      MemoryStream ms = new MemoryStream(company.CompanyLogo.Image, 0, company.CompanyLogo.Image.Length); 

      using (ms) 
      { 
       //saving image on current project directory 
       Image img = Image.FromStream(ms); 
       img.Save(Environment.CurrentDirectory+"\\"+ company.CompanyLogo.Name); 

       //copying to clipboard 
       StringCollection paths = new StringCollection(); 
       paths.Add(Environment.CurrentDirectory + "\\" + company.CompanyLogo.Name); 
       Clipboard.SetFileDropList(paths); 
      } 

     } 
    } 
+0

啊,從來沒有看到過您的答案。 – 2012-04-29 15:41:04

1

我有代碼的成功是這樣的:

File.WriteAllBytes(@"logo.jpg", company.CompanyLogo.Image.ToArray()); 
StringCollection paths = new StringCollection(); 
paths.Add("logo.jpg"); 
Clipboard.SetFileDropList(paths); 

現在,該文件是在剪貼板中,就像您在瀏覽器中完成CTRL-C。

這裏假設標識是jpg,在我的情況下,圖像存儲爲Sql Server的image數據類型。我認爲MySql的LONGBLOB行爲方式相同。請注意,您應該使用完整的路徑(爲簡潔起見,此處省略)

相關問題