怎麼把數據存儲到圖像中
A. 如何把圖片存到資料庫中
通常對用戶上傳的圖片需要保存到資料庫中。解決方法一般有兩種:一種是將圖片保存的路徑存儲到資料庫;另一種是將圖片以二進制數據乎羨讓流的形式直接寫入資料庫欄位中。以下為具體方法:
一、保存圖片的上傳路徑到資料庫:
string uppath="";//用於保存圖片上傳路徑
//獲取上傳圖片的文件名
string fileFullname = this.FileUpload1.FileName;
//獲取圖片上傳的時間,以時間作為圖片的名字可以防止圖片重名
string dataName = DateTime.Now.ToString("yyyyMMddhhmmss");
//獲取圖片的文件名(不含擴展名)
string fileName = fileFullname.Substring(fileFullname.LastIndexOf("\\") + 1);
//獲取圖片擴展名
string type = fileFullname.Substring(fileFullname.LastIndexOf(".") + 1);
//判斷是否為要求的格式
if (type == "bmp" || type == "jpg" || type == "jpeg" || type == "gif" || type == "JPG" || type == "JPEG" || type == "BMP" || type == "GIF")
{
//將圖片上傳到指定路徑的文件夾
this.FileUpload1.SaveAs(Server.MapPath("~/upload") + "\\" + dataName + "." + type);
//將路徑保存到變數,將該變數的值保存到資料庫相應欄位即可
uppath = "~/upload/" + dataName + "." + type;
}
二、將圖片以二進制數據流直接保存到資料庫:
引用如下命名空間:
using System.Drawing;
using System.IO;
using System.Data.sqlClient;
設計資料庫時,表中相應的欄位類型為iamge
保存:
//圖片路徑
string strPath = this.FileUpload1.PostedFile.FileName.ToString ();
//讀取圖片
FileStream fs = new System.IO.FileStream(strPath, FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fs);
byte[] photo = br.ReadBytes((int)fs.Length);
br.Close();
fs.Close();
//存入
SqlConnection myConn = new SqlConnection("Data Source=.;Initial Catalog=stumanage;User ID=sa;Password=123");
string strComm = " INSERT INTO stuInfo(stuid,stuimage) VALUES(107,@photoBinary )";//操作資料庫語句根據需要修改
SqlCommand myComm = new SqlCommand(strComm, myConn);
myComm.Parameters.Add("@photoBinary", SqlDbType.Binary, photo.Length);
myComm.Parameters["@photoBinary"].Value = photo;
myConn.Open();
if (myComm.ExecuteNonQuery() > 0)
{
this.Label1.Text = "ok";
}
myConn.Close();
讀取歲局:
...連接資料庫字元串省略
mycon.Open();
SqlCommand command = new
SqlCommand("select stuimage from stuInfo where stuid=107", mycon);//查詢語句根據需要修改
byte[] image = (byte[])command.ExecuteScalar ();
//指定從數據派叢庫讀取出來的圖片的保存路徑及名字
string strPath = "~/Upload/zhangsan.JPG";
string strPhotoPath = Server.MapPath(strPath);
//按上面的路徑與名字保存圖片文件
BinaryWriter bw = new BinaryWriter(File.Open(strPhotoPath,FileMode.OpenOrCreate));
bw.Write(image);
bw.Close();
//顯示圖片
this.Image1.ImageUrl = strPath;
採用倆種方式可以根據實際需求靈活選擇。
B. 圖像在資料庫中的存儲方法有哪些 如果將圖像先存入緩沖區,再存入資料庫,緩沖區如何實現為什麼要用
兩種,
1、一種是將圖片轉化成二進制數據流存入資料庫中;
2、一種是保存圖片的路徑,然後前台讀取路徑去調用圖片;
特點:
相關的代碼網路一下應該會有,第二種方法實現上比較簡單,就是存儲路徑,然後根據路徑讀取對應的圖片顯示出來。第一種就比較麻煩,要先把圖片轉化成二進制數據,讀取時就是從資料庫讀取對應數據再轉化成圖片顯示出來。
圖片存儲緩存的話需要通過圖片轉化為數據流進行存放在資料庫裡面,調用的時候按照數據流找到圖片存放路徑轉化出來就可以。
C. 如何將圖片存到資料庫中
一般圖片的處理都是上傳到伺服器然後將圖片的地址名稱依次保存在資料庫中,取出時按照地址取出就可以。直接用網上的圖片地址有的是可以的訪問,有的因為圖片加鎖,保留網上那個圖片地址最終是無法找到圖片的。
D. 怎麼把QQ瀏覽器下載的視頻保存到圖庫里
你可以按照以下步驟將QQ瀏覽器下載的視頻保存到圖庫里:1. 打開QQ瀏覽器,並找到已經下載好的視頻文件。2. 點擊文件右側的「更多」按鈕,然後選擇「分享」選項。3. 在彈出的分享菜單中,點擊「保存到相冊」選項。4. 在彈出的提示框中,點核消擊「允許」授權QQ瀏覽器訪灶悶問您的相冊。5. 然後選擇相冊,點擊隱氏彎「保存」即可將視頻保存至相冊中。完成以上所有步驟後,你將會發現,QQ瀏覽器下載的視頻文件已經成功保存到了你的相冊中。E. matlab中的imwrite函數怎麼用
imwrite函數用於保存圖像,具體如下:
1、保存到當前文件夾下:imwrite(I,'abc.png');
2、保存到當前文件夾下的一個子文件result下:imwrite(I,'./result/abc.png');
3、保存到當前文件夾上一層的一個文件夾result下:imwrite(I,'../result/abc.png');
其中I為要保存圖像,abc.png為文件名,保存為png格式也可以是其他格式(jpeg, bmp, tif...)。
保存在matlab路徑下的子文件夾中,需要提前要提前建立一個文件夾result才可以。
因此可以這么寫:imwrite(I,'lena.jpg','quality',80);
(5)怎麼把數據存儲到圖像中擴展閱讀:
關於imwrite函數
功能:該函數是把程序中兄晌的Mat類型的矩陣保存為圖像到指定位置。
函數賣芹形式:bool imwrite(const string& filename, InputArray img, const vector<int> ¶ms = vector<int>() )
參羨配鋒數列表:
filename:所需保存圖像的文件目錄和文件名,這里的文件名需要帶有圖像格式後綴。
img:img參數為圖像數據來源,其類型為Mat.
params:用來設置對應圖片格式的參數,因為一般情況下這些圖片格式都是經過了壓縮的,這里就是設置這些壓縮參數來控制圖片的質量。該參數是一個vector<int>類型,分別存paramid_1,paramValue_1,paramid_2,paramValue_2,
也就是說存入一對屬性值。若不設置該參數,則程序會自動根據所保存的圖像格式採用一個默認的參數。
F. 圖片如何存入資料庫
1、新建一個資料庫,資料庫名為Image,表名為image。並為表添加ID,tupian兩個列。
G. 如何將圖像文件存入到資料庫中
1.將Image圖像文件存入到資料庫中
我們知道資料庫里的Image類型的數據是"二進制數據",因此必須沒磨搭將圖像文件轉換成位元組數組才能存入資料庫中.
要這里有關數據的操作略寫,我將一些代碼段寫成方法,方便直接調用.
//根據文件名(完全路徑)
publicbyte[](stringfileName)
{
FileStreamfs=newFileStream(fileName,FileMode.Open);
int=(int)fs.Length;
byte[]image=newbyte[];
fs.Read(image,0,);
fs.Close();
returnimage;
}
//另外,在ASP.NET中通過FileUpload控制項得到的圖像文件可以通過以下方法
publicbyte[](FileUploadFileUpload1)
{
Streamstream=FileUpload1.PostedFile.InputStream;
byte[]photo=newbyte[FileUpload1.PostedFile.];
stream.Read(photo,0,FileUpload1.PostedFile.);
stream.Close();
returnphoto;
}
2.從SQLServer資料庫讀取Image類型的枯拿數據,並轉換成bytes[]或Image圖像文件
//要使用要載入usingSystem.Data.SqlClient命名空間
//將游侍資料庫中的Image類型轉換成byte[]
publicbyte[]SetImage(reader)
{
return(byte[])reader["Image"];//Image為資料庫中存放Image類型欄位
}
//將byte[]轉換成Image圖像類型
//載入以下命名空間usingSystem.Drawing;/usingSystem.IO;
usingSystem.Data.SqlClient;*/
publicImage(byte[]mybyte)
{
Imageimage;
=new(mybyte,0,mybyte.Length);
image=Image.FromStream();
returnimage;
}
H. 用sqlserver2000資料庫怎樣存儲圖像信息
什麼語言也不說清楚...
如何把一張圖片存到SQL Server資料庫中呢?比如說我並攔想把E:\pictures下的bone.jpg這張圖片存到資料庫中,該如何做呢?
MS自帶的資料庫Northwnd為例,其中有個表是Categories,有四個四段,其中有一個是Image類型的Picture欄位.我們首先添加一張bmp圖片到最後一行的Picture中,然後在讀出來顯示到Image控制項中.
添加一個SqlDataAdapter1,用向導設置聯接資料庫為Northwnd,SQL語句為SELECT [Category ID], [Category Name], Description, Picture FROM Categories.生成一個數據集為dataset1. 然後添加兩個按鈕分別表示寫圖片到資料庫和讀資料庫絕肢胡,還有一個Image控制項用於顯示圖片.
添加以下代碼
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
SqlDataAdapter1.Fill(DataSet11)
End Sub
'從資料庫讀取圖片暫時存儲為monkey.bmp,然後載入到image控制項裡面.
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LoadPicFromDb.Click
Try
Dim data As Byte() = DataSet11.Tables(0).Rows(7).Item(3)
Dim myfilestream As New System.IO.FileStream(Application.StartupPath & "\monkey.bmp", IO.FileMode.Create)
myfilestream.Write(data, 0, data.Length)
myfilestream.Close()
PictureBox1.Image = New Bitmap(Application.StartupPath & "\monkey.bmp")
Catch
End Try
End Sub
'把C:\6.bmp寫入庫中,你可以改為飢大自己的圖片.
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles InsertPicToDb.Click
Dim myfilestream As New System.IO.FileStream("c:\6.bmp", IO.FileMode.Open)
Dim data() As Byte
ReDim data(myfilestream.Length - 1)
myfilestream.Read(data, 0, myfilestream.Length)
myfilestream.Close()
DataSet11.Tables(0).Rows(7).Item(3) = data
SqlDataAdapter1.Update(DataSet11.GetChanges())
End Sub
1、建立過程 CREATEPROCEDUREsp_text( @srvnamevarchar(30), @loginvarchar(30), @passwordvarchar(30), @dbnamevarchar(30), @tbnamevarchar(30), @colnamevarchar(30), @filenamevarchar(30), @whereclausevarchar(40), @directionchar(1)) AS DECLARE@exec_strvarchar(255) SELECT@exec_str= 'text/S'+@srvname+ '/U'+@login+ '/P'+@password+ '/D'+@dbname+ '/T'+@tbname+ '/C'+@colname+ '/W"'+@whereclause+ '"/F'+@filename+ '/'+@direction EXECmaster..xp_cmdshell@exec_str
2、建表和初始化數據 createtable表名(編號int,image列名image) go insert表名values(1,0x) insert表名values(2,0x) go
3、讀入 sp_text'你的伺服器名','sa','你的密碼','庫名','表名','image列名','c:\圖片.avi','where編號=1','I'
--注意條件是編號=1 sp_text'你的伺服器名','sa','你的密碼','庫名','表名','image列名','c:\bb.wav','where編號=2','I'
--注意條件是編號=2 go 4、讀出成文件 sp_text'你的伺服器名','sa','你的密碼','庫名','表名','image列名','c:\圖片.avi','where編號=1','O'
--注意條件是編號=1 sp_text'你的伺服器名','sa','你的密碼','庫名','表名','image列名','c:\bb.wav','where編號=2','O'
--注意條件是編號=2 go 把image列清空:update表set列=null
bcp實現二進制文件的導入導出 支持image,text,ntext欄位的導入/導出 image適合於二進制文件,包括:Word文檔,Excel文檔,圖片,音樂等 text,ntext適合於文本數據文件 注意:導入時,將覆蓋滿足條件的所有行 導出時,將把所有滿足條件的行導出到指定文件中 此存儲過程僅用bcp實現 鄒建2003.08
---*/ /*
--調用示例
--數據導出 execp_binaryIO'zj','','','acc_演示數據..tb','img','c:\zj1.dat'
--數據導入 execp_binaryIO'zj','','','acc_演示數據..tb','img','c:\zj1.dat','',0
--*/ ifexists(select*fromdbo.sysobjectswhereid=object_id(N'[dbo].[p_binaryIO]')andOBJECTPROPERTY(id,N'IsProcere')=1) dropprocere[dbo].[p_binaryIO] GO Createprocp_binaryIO @servenamevarchar(30),
--伺服器名稱 @usernamevarchar(30),
--用戶名 @passwordvarchar(30),
--密碼 @tbnamevarchar(500),
--資料庫..表名 @fdnamevarchar(30),
--欄位名 @fnamevarchar(1000),
--目錄+文件名,處理過程中要使用/覆蓋 @filename+_temp @tjvarchar(1000)='',
--處理條件.對於數據導入,如果條件中包含@fdname,請指定表名前綴 @isoutbit=1
--1導出((默認),0導入 AS declare@fname_invarchar(1000)
--bcp處理應答文件名 ,@fsizevarchar(20)
--要處理的文件的大小 ,@m_tbnamevarchar(50)
--臨時表名 ,@sqlvarchar(8000)
--則取得導入文件的大小 if@isout=1 set@fsize='0' else begin createtable#tb(可選名varchar(20),大小int ,創建日期varchar(10),創建時間varchar(20) ,上次寫操作日期varchar(10),上次寫操作時間varchar(20) ,上次訪問日期varchar(10),上次訪問時間varchar(20),特性int) insertinto#tb execmaster..xp_getfiledetails@fname select@fsize=大小from#tb droptable#tb if@fsizeisnull begin print'文件未找到' return end end
--生成數據處理應答文件 set@m_tbname='[##temp'+cast(newid()asvarchar(40))+']' set@sql='select*into'+@m_tbname+'from( selectnullas類型 unionallselect0as前綴 unionallselect'+@fsize+'as長度 unionallselectnullas結束 unionallselectnullas格式 )a' exec(@sql) select@fname_in=@fname+'_temp' ,@sql='bcp"'+@m_tbname+'"out"'+@fname_in +'"/S"'+@servename +casewhenisnull(@username,'')=''then'' else'"/U"'+@usernameend +'"/P"'+isnull(@password,'')+'"/c' execmaster..xp_cmdshell@sql
--刪除臨時表 set@sql='droptable'+@m_tbname exec(@sql) if@isout=1 begin set@sql='bcp"selecttop1'+@fdname+'from' +@tbname+caseisnull(@tj,'')when''then'' else'where'+@tjend +'"queryout"'+@fname +'"/S"'+@servename +casewhenisnull(@username,'')=''then'' else'"/U"'+@usernameend +'"/P"'+isnull(@password,'') +'"/i"'+@fname_in+'"' execmaster..xp_cmdshell@sql end else begin
--為數據導入准備臨時表 set@sql='selecttop0'+@fdname+'into' +@m_tbname+'from'+@tbname exec(@sql)
--將數據導入到臨時表 set@sql='bcp"'+@m_tbname+'"in"'+@fname +'"/S"'+@servename +casewhenisnull(@username,'')=''then'' else'"/U"'+@usernameend +'"/P"'+isnull(@password,'') +'"/i"'+@fname_in+'"' execmaster..xp_cmdshell@sql
--將數據導入到正式表中 set@sql='update'+@tbname +'set'+@fdname+'=b.'+@fdname +'from'+@tbname+'a,' +@m_tbname+'b' +caseisnull(@tj,'')when''then'' else'where'+@tjend exec(@sql)
--刪除數據處理臨時表 set@sql='droptable'+@m_tbname end
--刪除數據處理應答文件 set@sql='del'+@fname_in execmaster..xp_cmdshell@sql go
試一下