C# 如何从数据库中读取图形图像并将其作为文件粘贴到剪贴板?
我有一个包含以下列的数据库表:idCompany:INT,Data:LONGBLOB,扩展名:VARCHAR(5),Name:VARCHAR(45) 我已成功使用entity framework将图像持久化到mysql中: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)
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,从未见过您的答案。只有在我提交我的答案时。