zoukankan
html css js c++ java
.Net下二进制形式的文件(图片)的存储与读取 [ZT]
.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
"
;
}
查看全文
相关阅读:
hdu 1255 矩形覆盖面积(面积交)
hdu 3642 覆盖3次以上体积
hdu 3255 体积并
hdu 3265 矩形剪块面积并
HDU 3397 区间覆盖,颠倒,合并(好题)
ACM-线段树扫描线总结
POJ 3667 线段树区间合并
数组排序----Demo
Spring MVC配置详解(3)
生产者消费者模式--
原文地址:https://www.cnblogs.com/RobotTech/p/1056138.html
最新文章
K-means聚类算法
Cookie详解
MYSQL管理----数据库删除恢复
mysql之SQL---存储过程
VI 摘要
python--字符串操作(删除,替换)
python----mysql链接汉字编码的问题
关于Django中路由层(URL-conf)
django初识
关于http协议
热门文章
[转载]jQuery中的html,val,text区别
bootstrap学习
前端基础------jquer y学习
linux学习3(vim)
javscript---Bom 和Dom
linux 学习2 (基于ubuntu)
linux 学习 (基于ubuntu)
poj 1655 树的重心 && define注意事项
hdu 2196 叶子节点最长距离(树DP)
hdu 1520 树形DP基础
Copyright © 2011-2022 走看看