.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[]对象,然后就把这个对象保存到数据库中去就实现了把图片的二进制格式保存到数据库中去了。下面我就谈谈如何把数据库中的图片读取出来,实际上这是一个相反的过程。
读取图片:把相应的字段转换成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";
            }

一些相关的东西,可以作为参考

Image image= GetImageFromClipboard();//实现从剪切板获取图像的功能 
System.IO.MemoryStream stream = new System.IO.MemoryStream(); 
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter formatter 
= new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter(); formatter.Serialize(stream, image);

FileStream fs=new FileStream("xx",FileMode.Open,FileAccess.Write); 
fs.Write(stream.ToArray(),0,stream.ToArray().Length);

最新文章

  1. Ubuntu中由root用户修改为普通用户的办法
  2. overflow-x和overflow-y其中一个设置为visible时的奇怪现象
  3. zw版【转发·台湾nvp系列Delphi例程】HALCON color_fuses1
  4. C#选择文件、选择文件夹、打开文件(或者文件夹)
  5. 关于服务器防火墙和discuz论坛的问题
  6. php 之 注册审核(0523)
  7. FZU 2195 检查站点
  8. 关于Cookie安全性设置的那些事
  9. 201521123117 《Java程序设计》第9周学习总结
  10. 字符编码 ASCII、Unicode和UTF-8的关系
  11. 对如下字符串(234453)[234]{2324}分析它的括号使用是否正确,括号匹配(Java实现)
  12. jquery获取浏览器URL参数
  13. Linux安装软件出现 “Unable to locate package xxx”错误
  14. 【Selenium】selenium中隐藏元素如何定位?
  15. 使用 Application Loader提交IPA文件到苹果市场
  16. Java 技术新手入门
  17. OPENSHIFT MYSQL使用Navicat远程连接
  18. BitAdminCore框架应用篇:(一)使用Cookiecutter创建应用项目
  19. HDU 2256 Problem of Precision (矩阵乘法)
  20. DevExpress导出Excel样式设置

热门文章

  1. 【SVN】彻底 svn 服务器上的 删除某一个文件或文件夹
  2. spring配置hibernate在使用oracle驱动时报错Cannot load JDBC driver class 'oracle.jdbc.driver.OracleDriver '
  3. 数据库与linux中quota的作用
  4. Mapper抽象类参数
  5. C++ remove remove_if erase
  6. c++ map multimap操作
  7. String字符串的截取
  8. Apache损坏无法使用怎么办
  9. shell学习笔记1-文件安全与权限
  10. eNSP——通过Telent登录系统