.NET中二进制图片的存储与读取
判断HttpContext是否为空:
string configPath = "img/defaultPhoto.png";
if (HttpContext.Current != null)
{
configPath = HttpContext.Current.Server.MapPath(configPath);
}
else
{
configPath = configPath.Replace("/", "\\");
if (configPath.StartsWith("\\"))
{
configPath = configPath.TrimStart('\\');
}
configPath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, configPath);
}
FileStream fs = new FileStream(configPath,FileMode.Open);
byte[] byData = new byte[fs.Length];
fs.Read(byData,,byData.Length);
fs.Close();
context.Response.OutputStream.Write(byData, , byData.Length);
context.Response.End();
.NET二进制图片存储与读取的常见方法有以下几种:
.NET二进制图片存储:以二进制的形式存储图片时,要把数据库中的字段设置为Image数据类型(SQL Server),存储的数据是Byte[].
1.参数是图片路径:返回Byte[]类型:
- public byte[] GetPictureData(string imagepath)
- {
- //根据图片文件的路径使用文件流打开,并保存为byte[]
- FileStream fs = new FileStream(imagepath, FileMode.Open);
- byte[] byData = new byte[fs.Length];
- fs.Read(byData, 0, byData.Length);
- fs.Close();
- return byData;
- }
2.参数类型是Image对象,返回Byte[]类型:
- public byte[] PhotoImageInsert(System.Drawing.Image imgPhoto)
- {
- //将Image转换成流数据,并保存为byte[]
- MemoryStream mstream = new MemoryStream();
- imgPhoto.Save(mstream, System.Drawing.Imaging.ImageFormat.Bmp);
- byte[] byData = new Byte[mstream.Length];
- mstream.Position = 0;
- mstream.Read(byData, 0, byData.Length);
- mstream.Close();
- return byData;
- }
好了,这样通过上面的方法就可以把图片转换成Byte[]对象,然后就把这个对象保存到数据库中去就实现了把图片的二进制格式保存到数据库中去了。下面我就谈谈如何把数据库中的图片读取出来,实际上这是一个相反的过程。
.NET二进制图片读取:把相应的字段转换成Byte[]即:Byte[] bt=(Byte[])XXXX
1.参数是Byte[]类型,返回值是Image对象:
- public System.Drawing.Image ReturnPhoto(byte[] streamByte)
- {
- System.IO.MemoryStream ms = new System.IO.MemoryStream(streamByte);
- System.Drawing.Image img = System.Drawing.Image.FromStream(ms);
- return img;
- }
2.参数是Byte[] 类型,没有返回值,这是针对asp.net中把图片从输出到网页上(Response.BinaryWrite)
- public void WritePhoto(byte[] streamByte)
- {
- // Response.ContentType 的默认值为默认值为“text/html”
- Response.ContentType = "image/GIF";
- //图片输出的类型有: image/GIF image/JPEG
- Response.BinaryWrite(streamByte);
- }
补充:
针对Response.ContentType的值,除了针对图片的类型外,还有其他的类型:
- Response.ContentType = "application/msword";
- Response.ContentType = "application/x-shockwave-flash";
- Response.ContentType = "application/vnd.ms-excel";
另外可以针对不同的格式,用不同的输出类型以适合不同的类型:
- switch (dataread("document_type"))
- {
- case "doc":
- Response.ContentType = "application/msword";
- case "swf":
- Response.ContentType = "application/x-shockwave-flash";
- case "xls":
- Response.ContentType = "application/vnd.ms-excel";
- case "gif":
- Response.ContentType = "image/gif";
- case "Jpg":
- Response.ContentType = "image/jpeg";
- }
.NET中二进制图片的存储与读取的更多相关文章
- iOS 图片的存储以及读取和删除
将图片存储到本地 NSArray *dirArray = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask ...
- numpy中文件的存储和读取-嵩天老师笔记
numpy中csv文件的存储和读取 CSV文件:(Comma‐Separated Value, 逗号分隔值) 一维和二维数组 存储 np.savetxt(frame,array,fmt='%.18e' ...
- Android读取url图片保存及文件读取
参考: 1.http://blog.csdn.net/ameyume/article/details/6528205 2.http://blog.sina.com.cn/s/blog_85b3a161 ...
- ASP.NET中让图片以二进制的形式存储在数据库中
今早有个网友问到我这问题,以前我都是直接在数据库中存文件名的,还没有试过存储整张图片到数据库中,上网搜索了一下,自己又测试了一番,代码如下:建立保存图片的表的SQL语句: USE [niunantes ...
- [TFRecord格式数据]利用TFRecords存储与读取带标签的图片
利用TFRecords存储与读取带标签的图片 原创文章,转载请注明出处~ 觉得有用的话,欢迎一起讨论相互学习~Follow Me TFRecords其实是一种二进制文件,虽然它不如其他格式好理解,但是 ...
- .Net下二进制形式的文件存储与读取
.Net下图片的常见存储与读取凡是有以下几种:存储图片:以二进制的形式存储图片时,要把数据库中的字段设置为Image数据类型(SQL Server),存储的数据是Byte[].1.参数是图片路径:返回 ...
- JSP读取数据库二进制图片并显示
用JSP从数据库中读取二进制图片并显示在网页上 环境mysql+tomcat: 先在mysql下建立如下的表. 并存储了二进制图像(二进制格式存储图片可以参考我的另一篇博客:https://www.c ...
- WP_从独立存储区读取缓存的图片
///<summary> /// 独立存储缓存的图片源 /// 用法:item.img = new StorageCachedImage(newUri(http://www.baidu ...
- SQLite数据库如何存储和读取二进制数据
SQLite数据库如何存储和读取二进制数据 1. 存储二进制数据 SQLite提供的绑定二进制参数接口函数为: int sqlite3_bind_blob(sqlite3_stmt*, int, co ...
随机推荐
- Office WPS如何让页与页之间不相互影响
在一个页面结束的位置点击插入-分页符,完了之后测试按回车下一页的内容有没有跟着往下跑,如果还是跟着往下跑的,再插入一次分页符,一般插入多次之后就不会跟着跑了,但是插的太多会有空白页面 测试按回车, ...
- Asp.Net 之 二维码生成
首先,引用 ThoughtWorks.QRCode.dll . 简单二维码生成及解码代码: //生成二维码方法一 private void CreateCode_Simple(string nr) { ...
- JBoss 系列十八:使用JGroups构建块RpcDispatcher构建群组通信应用
内容概要 本部分说明JGroups构建块接口RpcDispatcher,具体提供一个简单示例来说明如何使用JGroups构建块RpcDispatcher构建群组通信应用. 示例描述 类似Message ...
- 使用Kotlin创建Android项目
如果你已经使用过Android Studio和Gradle,那么这一章会比较简单.我不会给出很多细节和截图,因为用户界面和细节可能会一直变化. 我们的应用是由一个简单的天气app组成,正如所使用的Go ...
- Game Center Achievements and Leaderboards part 1 <转>
原地址:http://blog.sina.com.cn/s/blog_6b3661a901013xb0.html This is the first part of a step-by-step tu ...
- CCF-201512-3 绘图
问题描写叙述 用 ASCII 字符来绘图是一件有趣的事情.并形成了一门被称为 ASCII Art 的艺术.比如,下图是用 ASCII 字符画出来的 CSPRO 字样. .._._.._.._-_.. ...
- Net 服务命令行参考之一
转自:http://blog.sina.com.cn/s/blog_55035e9501015p05.html ----------------------------------最实用高效的网络管理 ...
- ionic build android log
RubertdeMacBook-Pro:~ Rubert$ ionic build android Current working directory is not a Cordova-based p ...
- centOS7 安装redis-3.2.6
0.下载tar.gz包并解压到某个位置,然后cd进入解压后的目录(redis-3.2.6)下 1.安装 make MALLOC=libc 关于为什么这样做,参考redis-3.2.6目录下的READM ...
- 使用PostSharp在.NET平台上实现AOP
摘自:http://www.cnblogs.com/leoo2sk/archive/2010/11/30/aop-postsharp.html 本文首先介绍AOP(面向方面编程)的相关概念及理论,然后 ...