.Net下二進(jìn)制形式的文件(圖片)的存儲(chǔ)與讀取詳細(xì)解析
.Net下圖片的常見存儲(chǔ)與讀取凡是有以下幾種:
存儲(chǔ)圖片:以二進(jìn)制的形式存儲(chǔ)圖片時(shí),要把數(shù)據(jù)庫中的字段設(shè)置為Image數(shù)據(jù)類型(SQL Server),存儲(chǔ)的數(shù)據(jù)是Byte[].
1.參數(shù)是圖片路徑:返回Byte[]類型:
public byte[] GetPictureData(string imagepath)
{
////根據(jù)圖片文件的路徑使用文件流打開,并保存為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.參數(shù)類型是Image對(duì)象,返回Byte[]類型:
public byte[] PhotoImageInsert(System.Drawing.Image imgPhoto)
{
//將Image轉(zhuǎn)換成流數(shù)據(jù),并保存為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;
}
好了,這樣通過上面的方法就可以把圖片轉(zhuǎn)換成Byte[]對(duì)象,然后就把這個(gè)對(duì)象保存到數(shù)據(jù)庫中去就實(shí)現(xiàn)了把圖片的二進(jìn)制格式保存到數(shù)據(jù)庫中去了。下面我就談?wù)勅绾伟褦?shù)據(jù)庫中的圖片讀取出來,實(shí)際上這是一個(gè)相反的過程。
讀取圖片:把相應(yīng)的字段轉(zhuǎn)換成Byte[]即:Byte[] bt=(Byte[])XXXX
1.參數(shù)是Byte[]類型,返回值是Image對(duì)象:
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.參數(shù)是Byte[] 類型,沒有返回值,這是針對(duì)asp.net中把圖片從輸出到網(wǎng)頁上(Response.BinaryWrite)
public void WritePhoto(byte[] streamByte)
{
// Response.ContentType 的默認(rèn)值為默認(rèn)值為“text/html”
Response.ContentType = "image/GIF";
//圖片輸出的類型有: image/GIF image/JPEG
Response.BinaryWrite(streamByte);
}
補(bǔ)充:
針對(duì)Response.ContentType的值,除了針對(duì)圖片的類型外,還有其他的類型:
Response.ContentType = "application/msword";
Response.ContentType = "application/x-shockwave-flash";
Response.ContentType = "application/vnd.ms-excel";
另外可以針對(duì)不同的格式,用不同的輸出類型以適合不同的類型:
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";
}
一些相關(guān)的東西,可以作為參考
Image image= GetImageFromClipboard();//實(shí)現(xiàn)從剪切板獲取圖像的功能
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);
- .net core EF Core調(diào)用存儲(chǔ)過程的方式
- C# Ado.net實(shí)現(xiàn)讀取SQLServer數(shù)據(jù)庫存儲(chǔ)過程列表及參數(shù)信息示例
- .net core2.0下使用Identity改用dapper存儲(chǔ)數(shù)據(jù)(實(shí)例講解)
- ASP.NET MVC用存儲(chǔ)過程批量添加修改數(shù)據(jù)操作
- asp.net中調(diào)用存儲(chǔ)過程的方法
- asp.net中調(diào)用oracle存儲(chǔ)過程的方法
- VB.NET調(diào)用MySQL存儲(chǔ)過程并獲得返回值的方法
- .NET中的字符串在內(nèi)存中的存儲(chǔ)方式
相關(guān)文章
asp.net實(shí)現(xiàn)上傳圖片時(shí)判斷圖片的模式GRB或CMYK的方法
這篇文章主要介紹了asp.net實(shí)現(xiàn)上傳圖片時(shí)判斷圖片的模式GRB或CMYK的方法,涉及asp.net針對(duì)圖片的讀取及屬性操作相關(guān)技巧,需要的朋友可以參考下2016-07-07
asp.net core mvc實(shí)現(xiàn)偽靜態(tài)功能
這篇文章主要為大家詳細(xì)介紹了asp.net core mvc實(shí)現(xiàn)偽靜態(tài)功能的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-02-02
asp.net Repeater顯示父子表數(shù)據(jù),無閃爍
兩天在改項(xiàng)目bug,發(fā)現(xiàn)以前有人做的repeater顯示父子表結(jié)構(gòu)展開和關(guān)閉子表數(shù)據(jù)時(shí)總是有閃爍,于是就試著改成無閃爍的,成功了,與大家分享.2009-12-12
.NET Corek中Git的常用命令及實(shí)戰(zhàn)演練
這篇文章將通過故事的形式從Git的歷史談起,并講述Git的強(qiáng)大之處。然后通過實(shí)戰(zhàn)演練教你如何在Github以及碼云上托管我們的代碼并進(jìn)行代碼的版本控制2019-04-04
datagrid綁定list沒有數(shù)據(jù) 表頭不顯示的解決方法
datagrid綁定list沒有數(shù)據(jù) 表頭不顯示的問題,那是因?yàn)?綁定了null,你給list new一下就好 表頭就會(huì)有啦2013-05-05
C#實(shí)現(xiàn)Web文件上傳的兩種方法實(shí)例代碼
在Web編程中,我們常需要把一些本地文件上傳到Web服務(wù)器上,上傳后,用戶可以通過瀏覽器方便地瀏覽這些文件,應(yīng)用十分廣泛。2013-07-07
asp.net內(nèi)置對(duì)象 Response對(duì)象使用介紹
這篇文章主要介紹了asp.net內(nèi)置對(duì)象:Response對(duì)象使用介紹,對(duì)Response對(duì)象感興趣的小伙伴們可以參考一下2015-11-11
Asp.net內(nèi)置對(duì)象之Request對(duì)象(概述及應(yīng)用)
Request對(duì)象主要用于獲取來自客戶端的數(shù)據(jù),如用戶填入表單的數(shù)據(jù)、保存在客戶端的Cookie等,本文將圍繞Request對(duì)象,講解其的主要作用:讀取窗體變量、讀取查詢字符串變量、取得Web服務(wù)器端的系統(tǒng)信息。取得客戶端瀏覽器信息等等,感興趣的朋友可以了解下2013-02-02

