判断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[]类型:

  1. public byte[] GetPictureData(string imagepath)
  2. {
  3. //根据图片文件的路径使用文件流打开,并保存为byte[]
  4. FileStream fs = new FileStream(imagepath, FileMode.Open);
  5. byte[] byData = new byte[fs.Length];
  6. fs.Read(byData, 0, byData.Length);
  7. fs.Close();
  8. return byData;
  9. }

2.参数类型是Image对象,返回Byte[]类型:

  1. public byte[] PhotoImageInsert(System.Drawing.Image imgPhoto)
  2. {
  3. //将Image转换成流数据,并保存为byte[]
  4. MemoryStream mstream = new MemoryStream();
  5. imgPhoto.Save(mstream, System.Drawing.Imaging.ImageFormat.Bmp);
  6. byte[] byData = new Byte[mstream.Length];
  7. mstream.Position = 0;
  8. mstream.Read(byData, 0, byData.Length);
  9. mstream.Close();
  10. return byData;
  11. }

好了,这样通过上面的方法就可以把图片转换成Byte[]对象,然后就把这个对象保存到数据库中去就实现了把图片的二进制格式保存到数据库中去了。下面我就谈谈如何把数据库中的图片读取出来,实际上这是一个相反的过程。

.NET二进制图片读取:把相应的字段转换成Byte[]即:Byte[] bt=(Byte[])XXXX

1.参数是Byte[]类型,返回值是Image对象:

  1. public System.Drawing.Image ReturnPhoto(byte[] streamByte)
  2. {
  3. System.IO.MemoryStream ms = new System.IO.MemoryStream(streamByte);
  4. System.Drawing.Image img = System.Drawing.Image.FromStream(ms);
  5. return img;
  6. }

2.参数是Byte[] 类型,没有返回值,这是针对asp.net中把图片从输出到网页上(Response.BinaryWrite)

  1. public void WritePhoto(byte[] streamByte)
  2. {
  3. // Response.ContentType 的默认值为默认值为“text/html”
  4. Response.ContentType = "image/GIF";
  5. //图片输出的类型有: image/GIF  image/JPEG
  6. Response.BinaryWrite(streamByte);
  7. }

补充:

针对Response.ContentType的值,除了针对图片的类型外,还有其他的类型:

  1. Response.ContentType = "application/msword";
  2. Response.ContentType = "application/x-shockwave-flash";
  3. Response.ContentType = "application/vnd.ms-excel";

另外可以针对不同的格式,用不同的输出类型以适合不同的类型:

  1. switch (dataread("document_type"))
  2. {
  3. case "doc":
  4. Response.ContentType = "application/msword";
  5. case "swf":
  6. Response.ContentType = "application/x-shockwave-flash";
  7. case "xls":
  8. Response.ContentType = "application/vnd.ms-excel";
  9. case "gif":
  10. Response.ContentType = "image/gif";
  11. case "Jpg":
  12. Response.ContentType = "image/jpeg";
  13. }

.NET中二进制图片的存储与读取的更多相关文章

  1. iOS 图片的存储以及读取和删除

    将图片存储到本地 NSArray *dirArray = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask ...

  2. numpy中文件的存储和读取-嵩天老师笔记

    numpy中csv文件的存储和读取 CSV文件:(Comma‐Separated Value, 逗号分隔值) 一维和二维数组 存储 np.savetxt(frame,array,fmt='%.18e' ...

  3. Android读取url图片保存及文件读取

    参考: 1.http://blog.csdn.net/ameyume/article/details/6528205 2.http://blog.sina.com.cn/s/blog_85b3a161 ...

  4. ASP.NET中让图片以二进制的形式存储在数据库中

    今早有个网友问到我这问题,以前我都是直接在数据库中存文件名的,还没有试过存储整张图片到数据库中,上网搜索了一下,自己又测试了一番,代码如下:建立保存图片的表的SQL语句: USE [niunantes ...

  5. [TFRecord格式数据]利用TFRecords存储与读取带标签的图片

    利用TFRecords存储与读取带标签的图片 原创文章,转载请注明出处~ 觉得有用的话,欢迎一起讨论相互学习~Follow Me TFRecords其实是一种二进制文件,虽然它不如其他格式好理解,但是 ...

  6. .Net下二进制形式的文件存储与读取

    .Net下图片的常见存储与读取凡是有以下几种:存储图片:以二进制的形式存储图片时,要把数据库中的字段设置为Image数据类型(SQL Server),存储的数据是Byte[].1.参数是图片路径:返回 ...

  7. JSP读取数据库二进制图片并显示

    用JSP从数据库中读取二进制图片并显示在网页上 环境mysql+tomcat: 先在mysql下建立如下的表. 并存储了二进制图像(二进制格式存储图片可以参考我的另一篇博客:https://www.c ...

  8. WP_从独立存储区读取缓存的图片

      ///<summary> /// 独立存储缓存的图片源 /// 用法:item.img = new StorageCachedImage(newUri(http://www.baidu ...

  9. SQLite数据库如何存储和读取二进制数据

    SQLite数据库如何存储和读取二进制数据 1. 存储二进制数据 SQLite提供的绑定二进制参数接口函数为: int sqlite3_bind_blob(sqlite3_stmt*, int, co ...

随机推荐

  1. 算法笔记_061:蓝桥杯练习 字串统计(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 问题描述 给定一个长度为n的字符串S,还有一个数字L,统计长度大于等于L的出现次数最多的子串(不同的出现可以相交),如果有多个,输出最长的,如果仍然 ...

  2. js 常用类型转换简写

    1.字符串转数字 +'666' 2.转换为字符串 ''+666 //'666'

  3. linux修改密码出现Authentication token manipulation error的解决办法

    转自 :http://blog.163.com/junwu_lb/blog/static/1916798920120103647199/ Authentication token manipulati ...

  4. <译>Zookeeper官方文档

    apache原文地址:http://zookeeper.apache.org/doc/trunk/zookeeperOver.html ZooKeeper ZooKeeper: A Distribut ...

  5. 我的Go语言学习之旅二:入门初体验 Hello World

    好吧,全部的程序猿们都已经习惯了.学习不论什么一门语言,我们都会以Hello World实例開始我们的学习,我也不例外.先来一个简单的样例 打开编辑器 (能够用记事本,我已经习惯 Notepad++了 ...

  6. 使用scrapy进行12306车票查询

    概述 通过12306的查询API进行查询某日火车票, 结果保存在csv文件中. 详细 代码下载:http://www.demodashi.com/demo/12623.html 一.环境搭建 1. 安 ...

  7. RS:推荐系统中的数据稀疏和冷启动问题

    如何在没有大量用户数据的情况下设计个性化推荐系统并且让用户对推荐结果满意从而愿意使用推荐系统,就是冷启动问题. 冷启动问题主要分为三类: (1) 用户冷启动:如何给新用户做个性化推荐的问题,新用户刚使 ...

  8. oracle经验小节2

    1,instr 函数 在Oracle/PLSQL中,instr函数返回要截取的字符串在源字符串中的位置. 语法如下: instr( string1, string2 [, start_position ...

  9. sql server使用sql插入中文字符串乱码问题

    在插入语句前加N就行了 sb.Append(string.Format("update chapter set [content]=N'{0}' where Id ={1} ;", ...

  10. JQuery.Page.js分页插件的使用

    1.简单直接贴代码 需要引用以下样式和脚本 <link href="~/Scripts/Page/pager.css" rel="stylesheet" ...