gpt4 book ai didi

c# - 从 Access 数据库中检索图像

转载 作者:太空宇宙 更新时间:2023-11-03 11:06:22 25 4
gpt4 key购买 nike

谁能帮我写这段代码??

我正在尝试从 Access 数据库中检索图像..

private void btnRetrieve_Click_1(object sender, EventArgs e)
{
//Save Temporarily that image bytes in one location and give that path to picture box
con.Open();

cmd = new OleDbCommand("select pic from shapes2 where ID= 1", con);

da = new OleDbDataAdapter(cmd);
da.Fill(dt);

if (dt.Rows.Count > 0)
{
if (dt.Rows[0]["pic"] != DBNull.Value)
{
pictureBox4.Image = ByteArrayToImage((Byte[])dt.Rows[0]["pic"]);
}
}

con.Close();
}

Bitmap ByteArrayToImage(byte[] b)
{
MemoryStream ms = new MemoryStream();
byte[] pData = b;
ms.Write(pData, 0, Convert.ToInt32(pData.Length));
Bitmap bm = new Bitmap(ms, false);
ms.Dispose();
return bm;
}

最佳答案

这似乎是一个常见问题,请参阅讨论: Reading image from Access - parameter not valid

问题是图像可以以不同的格式存储在 Access 数据库中:二进制 blob 或作为 OLE 对象。

我不知道您在 Access 数据库中使用的是哪一个,但如果它保存为直接二进制 blob,那么它就是图像本身,因此您的代码应该可以工作。

由于您遇到了问题,这可能意味着图像的存储方式不同:作为 OLE 对象。在那种情况下,元数据也与图像数据一起存储,并且元数据使获取图像变得更加困难,因为您必须以某种方式将其剥离。OLE 元数据的长度可变,因此您不能跳过它。
我见过的最好的方法是通过尝试在 OLE blob 中找到它的魔数(Magic Number)来找到图像文件的开头。

以下文章和问题将向您展示如何:

关于c# - 从 Access 数据库中检索图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15716542/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com