怎么把数据存储到图像中
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浏览器下载的视频保存到图库里
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
试一下