【转载】C#将图片以二进制流的方式存入数据库
在C#开发应用程序的过程中,图片一般会存放在文件系统中,当然图片也可以二进制的方式存放到数据库中,不过一般不建议存放在数据库中,因为图片占用的空间还是挺大的,特殊情况下可以考虑将图片存在数据。此文将介绍如何将图片存放在Sqlserver数据库中,并从数据库中读取出图片信息。
在将图片存储到数据库之前,需要先设计数据库表,建议使用sqlserver的数据类型Image类型存储数据,当然也有人使用二进制binary类型存储。
一、将图片写入数据库中的方法
在此方法中使用到FileStream类,该类在此的作用是将图片读取到文件流中。具体实现方法如下:
public void WriteImgToDb()
{
SqlConnection conn=new SqlConnection("server=.;database=pubs;trusted_connection=Yes");
conn.Open();
SqlCommand scmd = null;
string Path = Application.StartupPath + "//Imgren"; //为获取文件的根目录
int j = ;
FileStream fs=null;
for (int i = ; i <= ; i++) //利用循环添加一次添加图片
{
string sql = "insert into tb_Image values(@a,@b)"; //利用参数实现图片添加
scmd = new SqlCommand(sql, scon); scmd.Parameters.Add("@a", SqlDbType.Int);
scmd.Parameters["@a"].Value = i; //记住该方法,将值存入参数内 byte[] bt = new byte[]; //初始化图片大小
//创建图片写入流
fs = new FileStream(Path + "//" + i + ".bmp", FileMode.OpenOrCreate, FileAccess.Read);
fs.Read(bt, , bt.Length); //读取图片的字节数
scmd.Parameters.Add("@b", SqlDbType.Image, (int)fs.Length);
scmd.Parameters["@b"].Value = bt; //将图片的字节数存入参数内
j = scmd.ExecuteNonQuery();
}
if (j > )
MessageBox.Show("将图片写入数据库成功!!!", "友好提示");
else
MessageBox.Show("将图片写入数据库失败!!!", "友好提示");
fs.Close(); //关闭释放流资源
}
二、将从数据库中读取图片到picturebox控件中(WinForm窗体控件)。
此方法使用了MemoryStream类即内存流对象,同时使用了Image类,Image类是.NET Framework内部提供的图片相关类。从Sqlserver数据库中读取图片数据具体实现方法如下:
public void ReadDbImage()
{
SqlConnection conn=new SqlConnection("server=.;database=pubs;trusted_connection=Yes");
conn.Open();
SqlCommand scmd = null;
string sql = "select I_image from tb_image where I_id=" +int.Parse(textBox1.Text.Trim()) + "";
scmd = new SqlCommand(sql, scon);
SqlDataReader red = scmd.ExecuteReader();
if (red.Read())
{
//创建支持存储区的内存流
MemoryStream ms = new MemoryStream((byte[])red[]);
Image img = Image.FromStream(ms, true); //该方法: FromStream()为验证图像的流
this.pictureBox1.Image = img;
}
red.Close(); //关闭资源
}
扩展阅读:C#工具类:使用SharpZipLib进行压缩、解压文件、微软官方提供的Sqlserver数据库操作帮助类SQLHelper类。
备注:原文转载自C#将图片以二进制流的方式存入数据库_IT技术小趣屋。
博主个人技术交流群:960640092,博主微信公众号如下:

【转载】C#将图片以二进制流的方式存入数据库的更多相关文章
- 【转载】C#.NET WebApi返回各种类型(图片/json数据/字符串),.net图片转二进制流或byte
C#.NET WebApi返回各种类型(图片/json数据/字符串),.net图片转二进制流或byte 转载:http://www.itdos.com/Mvc/20150302/0741255.htm ...
- 【转载】C#将图片转换为二进制流调用
在C#中可以使用MemoryStream类.BinaryFormatter类等来操作图片,将图片读取到二进制数据流中,最终转成二进制数据流进行调用,详细的实现如下方法所示. private byte[ ...
- CEF 自定义用户协议(scheme)实现以二进制流的方式显示图片、视频、音频
转载:https://www.cnblogs.com/sinceret/p/10417941.html 转载:https://stackoverflow.com/questions/48811756/ ...
- php读取图片成二进制流输出
header( "Content-type: image/jpeg");$PSize = filesize('1.jpg');$picturedata = fread(fopen( ...
- ASP.Net将图片以二进制方式存入数据库,并读取
把图片转换成二进制--把二进制转换成图片 private void button1_Click(object sender, EventArgs e) { string path = this.tex ...
- python+ mysql存储二进制流的方式
很多时候我们为了管理方便会把依稀很小的图片存入数据库,有人可能会想这样会不会对数据库造成很大的压力,其实大家可以不用担心,因为我说过了,是存储一些很小的图片,几K的,没有问题的! 再者,在这里我们是想 ...
- Python实现将图片以二进制格式保存到MySQL数据库中,以及取出:
创建数据库表格式: CREATE TABLE photo ( photo_no int(6) unsigned NOT NULL auto_increment, image MEDIUMBLOB, P ...
- C#实现文件与二进制互转并存入数据库
这篇文章主要介绍了C#实现文件与二进制互转并存入数据库,本文直接给出代码实例,代码中包含详细注释,需要的朋友可以参考下 //这个方法是浏览文件对象 private void button1_C ...
- Unity C#图片转换二进制流、字符串互转
图片转二进制流转换图片互转 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分享. ...
随机推荐
- lua-01
ctrl + shift + L 多行编辑 ctrl + D 继续向下选中下一个相同的文本 Alt + F3 选中所有相同所选中德文本 =>Lua的快捷键 回调代码: function fact ...
- Asp.Net WebAPI核心对象解析(三)
对于.NET的分布式应用开发,可以供我们选择的技术和框架比较多,例如webservice,.net remoting,MSMQ,WCF等等技术.对于这些技术很多人都不会陌生,即时没有深入的了解,但是肯 ...
- VSCode插件开发全攻略(四)命令、菜单、快捷键
更多文章请戳VSCode插件开发全攻略系列目录导航. 命令 我们在前面HelloWord章节中已经提到了命令写法,这里再重温一下. context.subscriptions.push(vscode. ...
- 在ASP.NET MVC里对Web Page网页进行权限控制
我们在ASP.NET MVC开发时,有时候还是得设计ASP.NET的Web Page网页(.aspx和.aspx.cs),来实现一些ASP.NET MVC无法实现的功能,如此篇<Visual S ...
- 使用Nginx+Uwsgi部署Python Flask项目
第一次用Flask做Web(也是第一次用Python做Web),在部署的时候遇到了不少问题,现在将过程就下来,供在这方面也有疑惑的人参考.(PS:使用Apache+mod_wsgi部署模式的可以参考另 ...
- JavaScript变量转换
JavaScript变量转换 目录 自动转换 (1)Number与Boolean (2)Number与String (3)String与Boolean (4)null的自动转换 (5)undefine ...
- python之N阶乘结果末尾有几个0
算法思路:首先是算阶乘,可以使用内置函数reduce实现,其次是计算结果的末尾有几个0,可以使用除余判断 代码如下: #!/usr/bin/env python#-*-coding:utf-8-*- ...
- mesos支持gpu代码分析以及capos支持gpu实现
这篇文章涉及mesos如何在原生的mesoscontainerizer和docker containerizer上支持gpu的,以及如果自己实现一个mesos之上的framework capos支持g ...
- SLG手游Java服务器的设计与开发——架构分析
微信公众号[程序员江湖] 作者黄小斜,斜杠青年,某985硕士,阿里 Java 研发工程师,于 2018 年秋招拿到 BAT 头条.网易.滴滴等 8 个大厂 offer,目前致力于分享这几年的学习经验. ...
- 微信小程序:防止多次点击跳转(函数节流)和防止表单组件输入内容多次验证(函数防抖)
一.函数节流(throttle) **函数节流:一个函数执行一次后,只有大于设定的执行周期后才会执行第二次**.有个需要频繁触发函数,出于优化性能角度,在规定时间内,只让函数触发的第一次生效,后面不生 ...