问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何将asp.net中的image控件中的图片转换成字节数组

发布网友 发布时间:2022-04-14 05:37

我来回答

2个回答

热心网友 时间:2022-04-14 07:06

鉴于很多同学咨询,如何向数据库中存储并读取图片的方法.在此给出代码,供大家参考.但个人建议,尽量少向数据库中存储如此大二进制数据,会造成数据库过于膨胀,如果采用DataSet读取数据时,当数据量过大还会造成内存严重占用,尤其是在B/S程序设计中,后果会更明显,除非用户强烈要求.一般存储图片时,如无特殊要求,只需要在数据库中存储图片的相对路径即可,将真正的图片存储在指定的文件夹就OK了.当然,两种方式在不同的适用面都有自己的优缺点,下面几篇文章大家可以看看:

以下是存储并显示图片的代码
private void button1_Click(object sender, EventArgs e) //button1的Click事件
//存储图片的代码,需在界面添加按钮Button1,打开文件对话框openFileDialog1,列表框listBox1和图片控件pictureBox1,代码注释部分为SqlServer实现,非注释部分为Access实现,在Access中,数据库名为mydb.mdb,表名为photos,字段为photoid(文本类型,主键),photoimg(OLE对象类型,用于存图片)
{
openFileDialog1.Filter = "*jpg|*.jpg|*bmp|*.bmp|*gif|*.gif";
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
string fullpath = openFileDialog1.FileName
FileStream fs = new FileStream(fullpath, FileMode.Open, FileAccess.Read);
byte[] imagebytes = new byte[fs.Length];
BinaryReader br = new BinaryReader(fs);
imagebytes = br.ReadBytes(Convert.ToInt32(fs.Length));//把所选图片文件的流中的数据读入字节数组
OleDbConnection conn = new OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=" + Application.StartupPath + "[url=file://\\mydb.mdb]\\mydb.mdb[/url]");
conn.Open();
OleDbCommand cmd = new OleDbCommand("insert into photos values(@id,@Image)", conn);
cmd.Parameters.Add("@id", OleDbType.VarChar, 50);
cmd.Parameters.Add("@Image", OleDbType.Binary);//图片数据
cmd.Parameters["@id"].Value = DateTime.Now.Year.ToString() + DateTime.Now.Month + DateTime.Now.Day + DateTime.Now.Hour + DateTime.Now.Minute + DateTime.Now.Second + DateTime.Now.Millisecond;
cmd.Parameters["@Image"].Value = imagebytes;//为图片数据的SQL参数赋值
cmd.ExecuteNonQuery();
conn.Close();
//SqlConnection conn = new SqlConnection("server=LENOVO-B2A10C83;database=mydb;uid=sa;pwd=128126");
//conn.Open();
//SqlCommand cmd = new SqlCommand("insert into photos values(@id,@Image)", conn);
//cmd.Parameters.Add("@id", SqlDbType.VarChar, 50);
//cmd.Parameters.Add("@Image", SqlDbType.Image );//与ACCESS数据库唯一不同点
//cmd.Parameters["@id"].Value = DateTime.Now.Year.ToString() + DateTime.Now.Month + DateTime.Now.Day + DateTime.Now.Hour + DateTime.Now.Minute + DateTime.Now.Second + DateTime.Now.Millisecond;
//cmd.Parameters["@Image"].Value = imagebytes;
//cmd.ExecuteNonQuery();
//conn.Close();
MessageBox.Show("图片上传成功");
bindListBox();
}
}
private void bindListBox()//将photoId字段的数据显示在listBox1中,以便查看存入库中的每一个图片
{
OleDbConnection conn = new OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=" + Application.StartupPath + "[url=file://\\mydb.mdb]\\mydb.mdb[/url]");
OleDbCommand cmd = new OleDbCommand("select photoid from photos");
cmd.Connection = conn;
OleDbDataAdapter da = new OleDbDataAdapter();
da.SelectCommand = cmd;
DataSet ds = new DataSet();
da.Fill(ds);
listBox1.DataSource = ds.Tables[0].DefaultView;//设置listBox1的数据源
listBox1.DisplayMember = "photoid";//设置listBox1即将显示数据源中的哪个字段的数据
//SqlConnection conn = new SqlConnection("server=LENOVO-B2A10C83;database=mydb;uid=sa;pwd=128126");
//SqlCommand cmd = new SqlCommand("select photoid from photos");
//cmd.Connection = conn;
//SqlDataAdapter da = new SqlDataAdapter();
//da.SelectCommand = cmd;
//DataSet ds = new DataSet();
//da.Fill(ds);
//listBox1.DataSource = ds.Tables[0].DefaultView;
//listBox1.DisplayMember = "photoid";
}
private void Form1_Load(object sender, EventArgs e) //Form1的Load事件
{
bindListBox();//程序加载时,先将数据库中现有的数据显示在listBox1中
}
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)//listBox1的SelectedIndexChanged事件,当在listBox1中选择不同的photoId时,pictureBox1中显示该photoId对应的图片
{
OleDbConnection conn = new OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=" + Application.StartupPath + "[url=file://\\mydb.mdb]\\mydb.mdb[/url]");
OleDbCommand cmd = new OleDbCommand("select photoimg from photos where photoid='" + ((DataRowView)(listBox1.SelectedValue))[0] + "'");//将listBox1中选中的photoId所对应的图片数据从数据库中取出来
cmd.Connection = conn;
conn.Open();
OleDbDataReader dr = cmd.ExecuteReader();
dr.Read();
byte[] b = (byte[])dr[0];//将图片数据转换成字节数组
MemoryStream stmBLOBData = new MemoryStream(b);//将该字节数组转换成内存流
pictureBox1.Image = Image.FromStream(stmBLOBData);//将该内存流转换成Image对象,并显示在pictureBox1中
//SqlConnection conn = new SqlConnection("server=LENOVO-B2A10C83;database=mydb;uid=sa;pwd=128126");
//SqlCommand cmd = new SqlCommand("select photoimg from photos where photoid='" + ((DataRowView)(listBox1.SelectedValue))[0] + "'");
//cmd.Connection = conn;
//conn.Open();
//SqlDataReader dr = cmd.ExecuteReader();
//dr.Read();
//byte[] b = (byte[])dr[0];
//MemoryStream stmBLOBData = new MemoryStream(b);
//pictureBox1.Image = Image.FromStream(stmBLOBData);
}
另外,站长团上有产品团购,便宜有保证

热心网友 时间:2022-04-14 08:24

鉴于很多同学咨询,如何向数据库中存储并读取图片的方法.在此给出代码,供大家参考.但个人建议,尽量少向数据库中存储如此大二进制数据,会造成数据库过于膨胀,如果采用DataSet读取数据时,当数据量过大还会造成内存严重占用,尤其是在B/S程序设计中,后果会更明显,除非用户强烈要求.一般存储图片时,如无特殊要求,只需要在数据库中存储图片的相对路径即可,将真正的图片存储在指定的文件夹就OK了.当然,两种方式在不同的适用面都有自己的优缺点,下面几篇文章大家可以看看:

以下是存储并显示图片的代码
private void button1_Click(object sender, EventArgs e) //button1的Click事件
//存储图片的代码,需在界面添加按钮Button1,打开文件对话框openFileDialog1,列表框listBox1和图片控件pictureBox1,代码注释部分为SqlServer实现,非注释部分为Access实现,在Access中,数据库名为mydb.mdb,表名为photos,字段为photoid(文本类型,主键),photoimg(OLE对象类型,用于存图片)
{
openFileDialog1.Filter = "*jpg|*.jpg|*bmp|*.bmp|*gif|*.gif";
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
string fullpath = openFileDialog1.FileName
FileStream fs = new FileStream(fullpath, FileMode.Open, FileAccess.Read);
byte[] imagebytes = new byte[fs.Length];
BinaryReader br = new BinaryReader(fs);
imagebytes = br.ReadBytes(Convert.ToInt32(fs.Length));//把所选图片文件的流中的数据读入字节数组
OleDbConnection conn = new OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=" + Application.StartupPath + "[url=file://\\mydb.mdb]\\mydb.mdb[/url]");
conn.Open();
OleDbCommand cmd = new OleDbCommand("insert into photos values(@id,@Image)", conn);
cmd.Parameters.Add("@id", OleDbType.VarChar, 50);
cmd.Parameters.Add("@Image", OleDbType.Binary);//图片数据
cmd.Parameters["@id"].Value = DateTime.Now.Year.ToString() + DateTime.Now.Month + DateTime.Now.Day + DateTime.Now.Hour + DateTime.Now.Minute + DateTime.Now.Second + DateTime.Now.Millisecond;
cmd.Parameters["@Image"].Value = imagebytes;//为图片数据的SQL参数赋值
cmd.ExecuteNonQuery();
conn.Close();
//SqlConnection conn = new SqlConnection("server=LENOVO-B2A10C83;database=mydb;uid=sa;pwd=128126");
//conn.Open();
//SqlCommand cmd = new SqlCommand("insert into photos values(@id,@Image)", conn);
//cmd.Parameters.Add("@id", SqlDbType.VarChar, 50);
//cmd.Parameters.Add("@Image", SqlDbType.Image );//与ACCESS数据库唯一不同点
//cmd.Parameters["@id"].Value = DateTime.Now.Year.ToString() + DateTime.Now.Month + DateTime.Now.Day + DateTime.Now.Hour + DateTime.Now.Minute + DateTime.Now.Second + DateTime.Now.Millisecond;
//cmd.Parameters["@Image"].Value = imagebytes;
//cmd.ExecuteNonQuery();
//conn.Close();
MessageBox.Show("图片上传成功");
bindListBox();
}
}
private void bindListBox()//将photoId字段的数据显示在listBox1中,以便查看存入库中的每一个图片
{
OleDbConnection conn = new OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=" + Application.StartupPath + "[url=file://\\mydb.mdb]\\mydb.mdb[/url]");
OleDbCommand cmd = new OleDbCommand("select photoid from photos");
cmd.Connection = conn;
OleDbDataAdapter da = new OleDbDataAdapter();
da.SelectCommand = cmd;
DataSet ds = new DataSet();
da.Fill(ds);
listBox1.DataSource = ds.Tables[0].DefaultView;//设置listBox1的数据源
listBox1.DisplayMember = "photoid";//设置listBox1即将显示数据源中的哪个字段的数据
//SqlConnection conn = new SqlConnection("server=LENOVO-B2A10C83;database=mydb;uid=sa;pwd=128126");
//SqlCommand cmd = new SqlCommand("select photoid from photos");
//cmd.Connection = conn;
//SqlDataAdapter da = new SqlDataAdapter();
//da.SelectCommand = cmd;
//DataSet ds = new DataSet();
//da.Fill(ds);
//listBox1.DataSource = ds.Tables[0].DefaultView;
//listBox1.DisplayMember = "photoid";
}
private void Form1_Load(object sender, EventArgs e) //Form1的Load事件
{
bindListBox();//程序加载时,先将数据库中现有的数据显示在listBox1中
}
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)//listBox1的SelectedIndexChanged事件,当在listBox1中选择不同的photoId时,pictureBox1中显示该photoId对应的图片
{
OleDbConnection conn = new OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=" + Application.StartupPath + "[url=file://\\mydb.mdb]\\mydb.mdb[/url]");
OleDbCommand cmd = new OleDbCommand("select photoimg from photos where photoid='" + ((DataRowView)(listBox1.SelectedValue))[0] + "'");//将listBox1中选中的photoId所对应的图片数据从数据库中取出来
cmd.Connection = conn;
conn.Open();
OleDbDataReader dr = cmd.ExecuteReader();
dr.Read();
byte[] b = (byte[])dr[0];//将图片数据转换成字节数组
MemoryStream stmBLOBData = new MemoryStream(b);//将该字节数组转换成内存流
pictureBox1.Image = Image.FromStream(stmBLOBData);//将该内存流转换成Image对象,并显示在pictureBox1中
//SqlConnection conn = new SqlConnection("server=LENOVO-B2A10C83;database=mydb;uid=sa;pwd=128126");
//SqlCommand cmd = new SqlCommand("select photoimg from photos where photoid='" + ((DataRowView)(listBox1.SelectedValue))[0] + "'");
//cmd.Connection = conn;
//conn.Open();
//SqlDataReader dr = cmd.ExecuteReader();
//dr.Read();
//byte[] b = (byte[])dr[0];
//MemoryStream stmBLOBData = new MemoryStream(b);
//pictureBox1.Image = Image.FromStream(stmBLOBData);
}
如何将asp.net中的image控件中的图片转换成字节数组

//存储图片的代码,需在界面添加按钮Button1,打开文件对话框openFileDialog1,列表框listBox1和图片控件pictureBox1,代码注释部分为SqlServer实现,非注释部分为Access实现,在Access中,数据库名为mydb.mdb,表名为photos,字段为photoid(文本类型,主键),photoimg(OLE对象类型,用于存图片){ openFileDialog1.Filte...

如何把doc文件转换成PDF格式?

1.当然可以,首先要确定自己有一个pdf文档,而且确定目的是需要将pdf文档转换为word格式,然后我们将现有文档通过迅捷pdf转换器软件打开。2.通过选择PDF转换页面功能其中的PDF文件转WORD项目拖入文件。3.接着在迅捷pdf转换器下方按自己的需要是...

C# ASP.NET 如何上传图片进数据库 ? 我用的是VS2010。

string path = FileUpload1.FileName //记录图片所在的路径 byte[] byteImage = null; // 初始化一个字节数组储存图片 FileStream FStream = new FileStream(path , FileMode.Open, FileAccess.Read); //将图片以文件流的形式进行保存 BinaryReader BReader = new BinaryReader(FStream);byte...

如何在ASP.Net 中把图片存入数据库

我们需要一个字节型数组来存储image 内容 读取整个图片可以使用Stream对象的Read方法来实现 Read(in byte[] buffer int offset int count)方法有三个参数 【关于Read方法的详细内容可以参看 Net FrameWorkSDK】 他们是 buffer 字节数组 此方法返回时 该缓冲区包含指定的字符数组 该数组的 offset 和 (o...

asp.net中如何把字节流格式化为图片形式

image.Save(ms, ImageFormat.Jpeg); //把图片保存在内存流里面,格式为Jpeg格式 ms.Flush(); //关闭内存流 byte[] b=ms.GetBuffer(); //直接获得2进制byte数组 //b就是这个图片的字节流

asp.net 图片转成base64位流, 怎么转后在转成图片图片显示不全

asp.net图片转base64方法如下,在确保数据完整的情况下是不会有显示不全的情况出现。< Function ImagesToBase64(FileName)Dim xml Dim root Dim fs Dim FilePath Dim objStream Dim objXMLDoc Dim Base64 ''定义变量完结 '创建对像 FilePath=Server.MapPath(FileName)getFileExt = Mid(FilePath, ...

asp.net 如何读取文件夹下所有图片名称

//遍历images目录下所有png格式图片 DirectoryInfo imagesfile = new DirectoryInfo(Server.MapPath(@"~/images"));DataList1.DataSource = imagesfile.GetFiles("*.png");DataList1.DataBind();//同理把所有的图片格式的后缀放到数组里就可以遍历所有的图片了 ...

asp.net 怎么做一个带图片和文字的button

<asp:ImageButton ID="btnSubmit" runat="server" ImageUrl="http://www.baidu.com/img/baidu_sylogo1.gif";/> 效果 你可以定义宽高,和图片url。或者直接用 <asp:Button ID="btnLogin" runat="server" Text=" 登录 " CssClass="btn_5" /> 写在样式里边 .btn_b1{width:155px;height:90px;line-...

用ASP.NET创建网络相册保存美丽记忆

首先来看下 这个相册有哪些功能 在这个相册中 我们必须先把预先摄影好的照片放到一个目录下去 之后 可以供在网上使用 上一张 下一张 的链接一张张地查看 下面先介绍如何获得文件夹中的图片 我们可以使用System IO命名空间中的DirectoryInfo类来实现 将文件夹所在的路径做为参数传递到该类的构造函数中 并...

asp.net可以使用jSignature插件吗怎样使用

jSignature有个getData方法获取签名数据用的,默认数据类型为image(图片base64字符串)。其中有一个native获取的是用户绘制的数据数组,如果没做任何操作或者回退到没有任何操作,这个数组长度为0.

想深入学习C#语言,有没有达人知道C#的好的资料呢?

(提示:在控件的Paint事件过程中编写外观绘制代码)22、编写一个程序,将一幅位图显示在一个图片框中,对位图惊醒45度旋转后,将图中所有的红色替换为黑色,然后存盘。23、编写一个控制台程序,分别将字符串“hello,my friend”写入文件f1.txt,然后,将数据分别以整型、布尔型、双精度型、字符型读出并显示。24、编写一...

aspnet数据绑定控件 aspnet验证控件 aspnet验证控件功能 aspnet服务器控件有哪些 aspnet服务器控件 datalist控件 aspnet服务器控件生命周期 gridview控件的使用 asp数据源控件有哪些
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
怎么回答别人的某总 天猫315品质生活节是什么活动?有什么规定? 天猫315品质生活节有哪些活动?附申报须知 天猫315品质生活节报名时间是什么时候? 谁知道《阴谋与婚礼》的结局? 求像日剧《无间双龙》小栗旬饰演的那种型的男主。 2024年天猫315活动什么时候开始?活动有什么优惠? 浙江卫视豪门恩怨印度,为什么网上看不到 如何脱ASPack 2.12 -> Alexey Solodovnikov的壳 ...壳是ASPack 2.12 -> Alexey Solodovnikov但用脱壳工具是出现错误_百 ... 宝贝详情页怎么批量设计成一样的 CF那个图有许多卡点? 湖南省怀化市麻阳县工商银行卡号开头 谁对理财产品了解比较多啊,小赢网金怎么样? 0402开头是哪个银行 我的工行卡都是以9558或955888开头的啊!是怎么回事呢 “一问三不知”,到底是哪“三不知”呢? 《左传》中“一问三不知”的“三不知”指的是什么? 955888开头的是哪个银行的卡 肝火旺喝什么茶 差评对卖家影响很大,但为什么现在有些卖家不怕差评? 寒假五年级作文300字? 差评商家就可以不给退货,漫骂买家吗? 求大神帮我想一个英文的LOL五黑ID! 初中一年级语文题 一年级语文上册期末试卷一年四季什么花儿开 一年级语文上册期中试卷 一年级语文上册试卷 一年级上册语文复习习题 未指定错误 access数据库 美的空调的管道,最长可以加长多少米 急需一篇以“在感恩中成长”的1000字作文 梦见我去上坟然后把我家的墙搬倒了然后妈妈生气把墙推倒了? 梦见用推土机把墙推倒了,意味着什么 求数据库管理助手代码? 怎样扎高马尾显得高冷 上学扎什么头发简单好看自己动手 快开学了,怎么把头发扎的方便有独特? 开学扎什么头发最好看 马上要开学了,可是扎什么样的头发去报名呢 开学扎什么可爱的发型好 初学者怎样扎头发好看 怎样扎简单的头发在学校 图解 该怎么扎学生头 学生妹怎样扎头发好看 什么样的核桃是野生的? 女生怎么变高冷,上学要穿什么样鞋子 野生麻核桃和嫁接麻核桃有什么区别 野核桃玩法一般有啥要求与讲究 请教:书以载道是什么意思?