1. 如何将图片存到数据库中
保存图片到数据库中,有两种方法:
1、一种是用大对象,即blob型,对c#不了解,版但是java、c++中都有专门操作blob的对象权,应该是以二进制流的方式走的。但是不建议采用这样的管理方式,会加重数据库、程序负担,即使是手机开发也是如此。
2、图片保存在本地,数据库中用字符串存储地址,这样的方式比较好,也较易实现。但是缺乏安全性,把图片重命名就行了,改个后缀,一般人就不会打开。还是不放心,用二进制加密下就好,这样的程序代价仍然要比存在数据库大对象中要好。
2. 如何在ASP.Net 中把图片存入数据库
一 介绍可能有很多的时候 我们急需把图片存入到数据库当中 在一些应用程序中 我们可能有一些敏感的资料 由于存储在文件系统(file system)中的东西 将很容易被某些用户盗取 所以这些数据不能存放在文件系统中
在这篇文章中 我们将讨论怎样把图片存入到Sql 当中
在这篇文章中我们可以学到以下几个方面的知识
插入图片的必要条件
使用流对象
查找准备上传的图片的大小和类型
.怎么使用InputStream方法?
在我们开始上传之前 有两件重要的事我们需要做
(1)Form 标记的 enctype 属性应该设置成 enctype= multipart/form data
(2) 需要一个<input type=file>表单来使用户选择他们要上传的文件 同时我们需要导入 System IO名称空间来处理流对象
把以上三点应用到aspx页面 同时我们需要对SqlServer做以下的准备
(1)需要至少含有一个图片类型的字段的表
(2)如果我们还有另外一个变字符类型的字段来存储图片类型 那样会更好一些
现在 我们准备了一个Sql表(包含了一个image数据类型的字段) 还有<input type=file>标记 当然我们还得准备Submit按钮 以便用户在选择了图片以后提交 在这个按钮的Onclick事件里 我们需要读取选取图片的内容 然后把它存入到表里 那我们先来看看这个Onclick事件
提交按钮的Onclick事件的代码
Dim intImageSize As Int Dim strImageType As StringDim ImageStream As Stream
Gets the Size of the ImageintImageSize = PersonImage PostedFile ContentLength
Gets the Image TypestrImageType = PersonImage PostedFile ContentType
Reads the ImageImageStream = PersonImage PostedFile InputStream
Dim ImageContent(intImageSize) As ByteDim intStatus As IntegerintStatus = ImageStream Read(ImageContent intImageSize)
Create Instance of Connection and Command ObjectDim myConnection As New SqlConnection(ConfigurationSettings AppSettings( ConnectionString ))Dim myCommand As New SqlCommand( sp_person_isp myConnection)
Mark the Command as a SPROCmyCommand CommandType = CommandType StoredProcere
Add Parameters to SPROCDim prmPersonImage As New SqlParameter( @PersonImage SqlDbType Image)prmPersonImage Value = ImageContentmyCommand Parameters Add(prmPersonImage)
Dim prmPersonImageType As New SqlParameter( @PersonImageType SqlDbType VarChar )prmPersonImageType Value = strImageTypemyCommand Parameters Add(prmPersonImageType)
TrymyConnection Open()myCommand ExecuteNonQuery()myConnection Close()Response Write( New person successfully added! )Catch SQLexc As SqlExceptionResponse Write( Insert Failed Error Details are: & SQLexc ToString())End Try
这是怎么工作的呢?PersonImage是HTMLInputFile控件的对象 首先需要获得图片的大小 可以使用下面的代码实现
intImageSize = PersonImage PostedFile ContentLength
然后返回图片的类型使用ContenType属性 最后 也是最重要的事就是取得Image Stream 这可以用以下代码实现
ImageStream = PersonImage PostedFile InputStream
我们需要一个字节型数组来存储image 内容 读取整个图片可以使用Stream对象的Read方法来实现 Read(in byte[] buffer int offset int count)方法有三个参数 【关于Read方法的详细内容可以参看 Net FrameWorkSDK】 他们是
buffer字节数组 此方法返回时 该缓冲区包含指定的字符数组 该数组的 offset 和 (offset + count) 之间的值由从当前源中读取的字节替换
offsetbuffer 中的从零开始的字节偏移量 从此处开始存储从当前流中读取的数据
count要从当前流中最多读取的字节数
这个Read方法用以下代码实现 intStatus = ImageStream Read(ImageContent intImageSize)现在 我们已经读取了整个图片的内容 下一步 我们要把这些内容存入到sql 表 我们将使用存储过程来完成插入图片类型和图片内容到sql 表 如果你浏览了上面的代码 你将会发现我们使用了sqldbtype image的数据类型(datatype) Ok了 完成了这些 我们也就成功的把图片存入到SqlServer中了 下面是我们编写的aspx页面
二 结论
lishixin/Article/program/net/201311/15186
3. 怎么将图片录入到数据库中
1.把图片在文件系统里的路径存在数据库里
2.要读取图片的时候把数据库里的路径查出来,然后再根据路径在文件系统里读取图片。
4. 怎样把图片存入SQL数据库表中
将图片存入SQL数据库中一般分两种情况
一、把图片转换成二进制形式存储在数据库中
一般数据库提供一个二进制字段来存储二进制数据。如SQLServer中的BINARY,VARBINARY;
1、BINARY数据类型用于存储二进制数据。其定义形式为BINARY(n),n表示数据的长度,取值为1到8000。在使用时必须指定BINARY类型数据的大小,至少应为1个字节。BINARY类型数据占用n+4个字节的存储空间。在输入数据时必须在数据前加上字符“0X”作为二进制标识,如:要输入“abc”则应输入“0xabc”。若输入的数据过长将会截掉其超出部分。若输入的数据位数为奇数,则会在起始符号“0X”后添加一个0,如上述的“0xabc”会被系统自动变为“0x0abc”。
2、VARBINARY数据类型的定义形式为VARBINARY(n)。它与BINARY类型相似,n的取值也为1到8000,若输入的数据过长,将会截掉其超出部分。不同的是VARBINARY数据类型具有变动长度的特性,因为VARBINARY数据类型的存储长度为实际数值长度+4个字节。当BINARY数据类型允许NULL值时,将被视为VARBINARY数据类型。
一般情况下,由于BINARY数据类型长度固定,因此它比VARBINARY类型的处理速度快
二、图片存储在磁盘上,数据库字段中保存的是图片的路径
存储路径存储路径字符串即可,sql中可以使用varchar/nvarchar;
总结:将图片文件直接以二进制存储数据库需要将图片提前转为二进制数据,以存储图片物理路径的方式需要将图片文件放置指定位置,这都需要配合不同的编程语言实现;
以C#为例:
//点击按钮执行存入
privatevoidbtnWrite_Click(objectsender,EventArgse)
{
OpenFileDialogofd=newOpenFileDialog();
ofd.Filter="*jpg|*.JPG|*.GIF|*.GIF|*.BMP|*.BMP";
if(ofd.ShowDialog()==DialogResult.OK)
{
stringfilePath=ofd.FileName;//图片路径
FileStreamfs=newFileStream(filePath,FileMode.Open);//读取图片流
byte[]imageBytes=newbyte[fs.Length];
BinaryReaderbr=newBinaryReader(fs);
imageBytes=br.ReadBytes(Convert.ToInt32(fs.Length));//图片转换成二进制流
stringstrSql=string.Format("insertinto[SBS].[dbo].[Model]([M_QRCode],[M_Skills])values(@image,'2')");
intcount=Write(strSql,imageBytes);
if(count>0)
{
MessageBox.Show("success");
}
else
{
MessageBox.Show("failed");
}
}
}
//数据库连接和保存图片语句
privateintWrite(stringstrSql,byte[]imageBytes)
{
stringconnStr="DataSource=数据库地址;initialCatalog=SBS;UserID=sa;Password=sa;";
using(SqlConnectionconn=newSqlConnection(connStr))
{
using(SqlCommandcmd=newSqlCommand(strSql,conn))
{
try
{
conn.Open();//打开数据库链接
SqlParametersqlParameter=newSqlParameter("@image",SqlDbType.Image);
sqlParameter.Value=imageBytes;
cmd.Parameters.Add(sqlParameter);
introws=cmd.ExecuteNonQuery();//执行插入操作
returnrows;
}
catch(Exceptione)
{
throw;
}
}
}
}
5. 如何将图片插入到数据库中
第一步://获取当前选择的图片 this.pictureBox1.Image = Image.FromStream(this.openFileDialog1.OpenFile()); //获取当前图片的路径 string path = openFileDialog1.FileName.ToString(); //将制定路径的图片添加到FileStream类中 FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read); //通过FileStream对象实例化BinaryReader对象 BinaryReader br = new BinaryReader(fs); //通过BinaryReader类对象的ReadBytes()方法将FileStream类对象转化为二进制数组 byte[] imgBytesIn = br.ReadBytes(Convert.ToInt32(fs.Length));第二步://将图片添加到数据库中 string sql="insert into pic values(@pic)"; SqlParameter[] param = new SqlParameter[] { new SqlParameter("@pic", imgBytesIn) }; DBHelper.GetExecuteQuery(sql, param);第三步://将图片从数据库中取出 string sql="select * from pic where id=0"; SqlDataReader reader = DBHelper.GetExecuteReader(sql, null); MemoryStream mss = null;
6. python 如何把图片存入数据库
作者:小风寒呐
链接:https://zhuanlan.hu.com/p/30212013
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
首先我们读取图库中所有图片的名称,保存在fileNames中。然后读取Data.csv中所有数据。
提取出Data.csv的最后一列(一共10002列,第10001列说明该数字是什么数字,第10002列是图片的名称),也就是数据库中存储的所有图片的名称,存储在item中。
将新加入图库的图片名称保存在newFileNames中。如果Data.csv为空,那么就直接令newFileNames
=
fileNames。也就是说如果数据库中什么也没有,那么图库中所有图片都是新加入的。
如果Data.csv不为空,那么就将item里面的内容与fileNames的内容比较,如果出现了fileNames里面有的名称item中没有,那么就将这些名称放进newFileNames中。如果item里有的名称fileNames中没有,那就不管。
也就是说,我令我们的数据库只进不出。
现在我们得到了新加入图库的图片的名称newFileNames。
将newFileNames中的名称的图片带入上一文中函数GetTrainPicture进行处理,得到了一个nx10001的矩阵,每一行代表一个新加入的图片,前10000列是图片向量,第10001列是该图片的数字,保存在pic中。
7. 图片如何存入数据库
通常对用户上传的图片需要保存到数据库中。解决方法一般有两种:一种是将图片保存的路径存储到数据库;另一种是将图片以二进制数据流的形式直接写入数据库字段中。以下为具体方法:
一、保存图片的上传路径到数据库:
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;
采用俩种方式可以根据实际需求灵活选择。
8. 数据库中可以存储照片么怎么存储
数据中可以存储图片,但是需要注意不能直接存储图片,而是转换成二进制或者Base64等的“文本”来存储,在用的时候,可以再转换回来。
在网站开发中,一般将图片存储在文件系统中,而不是数据系统中,数据库系统中只记录图片在文件系统中的路径而已。