判断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. Android开发--用户定位服务--UserLocation

    Android开发--用户定位服务--UserLocation 2013-01-28 08:32:26     我来说两句      作者:BruceZhang 收藏    我要投稿 [java] & ...

  2. Maven中setting.xml配置Demo

    <!-- 指定本地默认仓库 --> <localRepository>G:\Java\apache-maven-3.5.2\repository</localReposi ...

  3. 让你的 wowza server提供 RESTful web 服务

            有时我们 nginx 须要和 wowza 服务器交互以进行一些 LB 事宜:有时我们的管理员须要实时了解 wowza 服务器的一些其它状态信息(比方一些自己定义对象的状态等等).而用 ...

  4. Unity Inspector 给组件自动关联引用(二)

    通过声明的变量名称,主动关联引用. 使用这个关联引用两种方式1.  给你组件继承  MonoAutoQuote 点击组件inspector 按钮执行2.  给你组件类添加[AAutoQuote] 特性 ...

  5. 小强升职记(GTD)脑图

  6. Python-文件修改器

    #-*- coding: utf-8 -*- import os import sys import glob from PyQt4.QtGui import * from PyQt4.QtCore ...

  7. Hacker - 世界上第一个黑客

    http://juliet.iteye.com/blog/176525凯文·米特尼克,1964年生于美国加州的洛杉矶. 13岁时他对电脑着了迷,掌握了丰富的计算机知识和高超的操作技能,但却因为用学校的 ...

  8. 企业信息系统集成框架(设计思路)C模式

    1.客户端.h文件 #pragma once #include<stdlib.h> //A程序员定义接口形式和调用模式 //初始化句柄 typedef int(*Init_Socket)( ...

  9. Python向PHP发起GET与POST请求

    CloudB项目中到PHP开发WEB管理端,用Python开发服务控制端,在项目中Python的服务控制端有时候须要主动连接PHP的WEB管理端下载或上传配置參数或数据信息,这里採用的原理是Pytho ...

  10. C#通过webbrowser控件与javascript交互

    1.C#里调用控件里面网页的js函数     //调用JavaScript的messageBox方法,并传入参数     object[] objects = new object[1];     o ...