.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 ...
随机推荐
- swift 使用匿名函数初始化属性
swift 使用匿名函数初始化属性 匿名函数格式: { //代码体 }() 大括号是定义函数体的,小括号()是调用函数体的. 为什么不写一个函数然后调用函数呢?为何用匿名函数呢? 主要还是代码的简洁性 ...
- .NET Framwork 之 源代码编译成托管代码托管代码合并成程序集
我们都知道,C#程序需要在 .NET Framework 的环境中运行. 一.程序运行所需的三个关键 1.IL(中间语言):编译器编译源代码时生成的代码. 2. Framework类库(Framewo ...
- 【Firefly API文档】—— Package Netconnect
http://bbs.gameres.com/forum.php?mod=viewthread&tid=219655 package netconnect 该包中包含的服务端与客户端通信的一些 ...
- iOS APP 上传
原地址:http://www.cnblogs.com/uvsjoh/archive/2012/11/14/2769739.html 流程:1 开发好要发布的程序 -- 需要在程序中包含符合要求规格的i ...
- 微信小程序innerAudioContext接口
voice:function(){ var word = this.data.word; var src = 'https://--/'+word['word']+'.mp3'; console.lo ...
- windows域相关
查看域角色: netdom query fsmo
- javascript 将内容复制到剪贴板
javascript 将内容复制到剪贴板 CreateTime--2017年9月19日11:36:50 Author:Marydon js 操作剪贴板 1.设置剪贴板内容 UpdateTime-- ...
- 十五套专为开发人员打造的PHP资源库
转载自:http://developer.51cto.com/art/201508/488143.htm 1)Mink Mink是一套PHP 5.3库,用于在测试当中模拟Web应用程序与浏览器之间的交 ...
- Repository与UnitOfWork引入
Repository是什么? 马丁大叔的书上同样也有解释:它是衔接数据映射层和域之间的一个纽带,作用相当于一个在内存中的域对象映射集合,它分离了领域对象和数据库访问代码的细 节.Repository受 ...
- “ResGen.exe”已退出,代码为2 问题处理
这属于VS2010不能编译.Net3.5的问题 用VS2010创建了一个.Net 3.5的Winform项目,结果编译失败,这个问题也算是第二次碰到了,真纠结···这次不再偷懒了,把解决方法记录下来吧 ...