C# 如何从数据库中读取图形图像并将其作为文件粘贴到剪贴板?

C# 如何从数据库中读取图形图像并将其作为文件粘贴到剪贴板?,c#,mysql,entity-framework,clipboard,C#,Mysql,Entity Framework,Clipboard,我有一个包含以下列的数据库表:idCompany:INT,Data:LONGBLOB,扩展名:VARCHAR(5),Name:VARCHAR(45) 我已成功使用entity framework将图像持久化到mysql中: public static void PersistCurrentImage(Company company, FileStream logoStream, MyEntities context) { if (logoStream != null)

我有一个包含以下列的数据库表:idCompany:INT,Data:LONGBLOB,扩展名:VARCHAR(5),Name:VARCHAR(45)

我已成功使用entity framework将图像持久化到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();

        }
    }
我想做的是从数据库中获取图像,用它制作一个文件,并将其放在剪贴板中,以便以后我可以粘贴该文件


我已经找了一个小时的解决方案,但我似乎能找到它。提前谢谢

好的,我已经解决了。首先将图像写入硬盘,然后将其复制到剪贴板

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

        }
    }

我成功地编写了如下代码:

File.WriteAllBytes(@"logo.jpg", company.CompanyLogo.Image.ToArray());
StringCollection paths = new StringCollection();
paths.Add("logo.jpg");
Clipboard.SetFileDropList(paths);
现在,该文件位于剪贴板中,就像您在资源管理器中执行了ctrl-C一样


这假设徽标是jpg,在我的例子中,图像存储为Sql Server的
图像
数据类型。我认为MySql的
LONGBLOB
也有同样的表现。请注意,您应该使用完整的路径(为简洁起见,此处省略。

Ah,从未见过您的答案。只有在我提交我的答案时。