软件问答

软件问答

当前位置:网站首页 > 印刷问答 > 软件问答 > 正文

数据库如何存取图片?

吉印通 2021-05-30 157 0

数据库存图片的方式以下两种:

在数据库中存储图片文件的文件名或存储路径(本地路径或者网络路径)这是最常用的方式,即是将图片的存储的完整路径或文件名以字符串的方式存入到数据库中,读取效率高、而且便于维护pic文件。实现的方法也比较简单,拿最常见的使用场景来说吧,比如用户注册时,需要他上传了一张照片,常见做法就是使用文件控件FileUpload让用户选择电脑的上面的图片,然后将其选择的图片所在的路径及文件名获取,将文件上传后同时将文件名保存到数据库对应的表中,显示图片时只需要从数据库中获取文件名并构造完整路径即可。

ASP.NET

代码如下:

//获取FileUpload控件选取图片后的文件路径

strng filepath=FileUpload1.PostedFile.FileName;

//获取图片文件名,即从图片路径字符串中获取最后\\的那段

string filename=filepath.Substring(filepath.LastIndexOf("\\")+1);

//然后执行文件上传pic文件,将文件保存到服务器指定的目录,如在程序目录下建立一个PIC文件夹保存文件

FileUpload1.PostedFile.SaveAs(Server.MapPath("PIC/")+filename);

上传成功后,将文件名filename字符串插入数据库即可pic文件。

显示时将filename从数据取出,用Image1.ImageUrl="PIC/"+filename 显示pic文件。

将图片文件转为二进制文件流保存到数据库,显示时再二进制转为文件这种方式很少用,因为图片包含的信息比较多,转为二进制后存储的内容大,占用空间,而且需要转换,费时好资源pic文件。

保存图片的 核心代码如下:

//文件路径

string picturePath = @"D:\1.jpg";

//创建FileStream对象

FileStream fs = new FileStream(picturePath, FileMode.Open, FileAccess.Read);

//声明Byte数组

Byte[] mybyte = new byte[fs.Length];

//读取数据

fs.Read(mybyte, 0, mybyte.Length);

fs.Close();

//转换成二进制数据 mybyte 保存到数据库

SqlParameter prm = new SqlParameter

("@blobdata", SqlDbType.VarBinary, mybyte.Length, ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, mybyte);

command.Parameters.Add(prm);

//打开数据库连接

connection.Open();

command.ExecuteNonQuery();

connection.Close();

读取图片的核心代码如下:

//打开数据库连接

connection.Open();

//创建SQL语句

string sql = "select BLODID,BLOBData from Images order by BLODID";

//创建SqlCommand对象

SqlCommand command = new SqlCommand(sql, connection);

//创建DataAdapter对象

SqlDataAdapter dataAdapter = new SqlDataAdapter(command);

//创建DataSet对象

DataSet dataSet = new DataSet();

dataAdapter.Fill(dataSet, "BLOBTest");

int c = dataSet.Tables["BLOBTest"].Rows.Count;

if (c > 0)

Byte[] mybyte = new byte[0];

mybyte = (Byte[])(dataSet.Tables["BLOBTest"].Rows[c - 1]["BLOBData"]);

MemoryStream ms = new MemoryStream(mybyte);

//显示图片

pictureBox1.Image = Image.FromStream(ms);

connection.Close();

(●'◡'●)~欢迎评论留言解答~(●'◡'●)

相关推荐

  • 在CDR做A4的传单,怎么设置大小和出血位?

    在CDR做A4的传单,怎么设置大小和出血位?

    直接用矩形工具画个216*291mm大小的就可以了,因为单页的尺寸是210*285mm,每边各留3mm出血位CDR里的剪切蒙版怎么做出血。...

    2021-06-15 176 0

  • ps中剪切蒙板

    ps中剪切蒙板

    是剪贴蒙版,这图上面还有图没剪贴到CDR里的剪切蒙版怎么做出血。或者你下面剪贴的图层有透明度...

    2021-06-15 559 0

  • 如何更改PDF文件

    如何更改PDF文件

    要修改PDF文件,一般用二个软件PDF文件太大了怎么办?。其一是用AdobeAcrobat;二是FoxirPDFEditor。现介绍用AdobeAcrobat修改PDF文件的方法:你先用AdobeAcrob...

    2021-06-15 209 0

  • ps做出血怎么做?

    ps做出血怎么做?

    据设计方的要求CDR里的剪切蒙版怎么做出血,或者行业规定,在PS中通过参考标尺工具,添加辅助线,定位好出血区域!应视具体情况而定1.PS里需加大画布尺寸,图片可直接拉大;2.若图层未合并,可按需要在所在图层加出血;...

    2021-06-15 271 0

  • 打开PS文件,提示缺少字体该怎么办

    打开PS文件,提示缺少字体该怎么办

    PS缺少字体,到网上下载字体后安装即可PS文件缺少字体的问题。字体安装方法:  1、复制将要安装的字体;   2、打开“我的电脑”PS文件缺少字体的问题,接着打开C盘,然后找到C盘下的WINDOWS目录文件夹...

    2021-06-15 531 0

  • pdf文件每一页太大,想把它整体缩小点,该怎么办?

    pdf文件每一页太大,想把它整体缩小点,该怎么办?

    AdobeAcrobat压缩pdf如图示操作打开pdf后,选择文件---另存为---前者“缩小大小的pdf”针对文本内容的;后者"优化扫描版的pdf"针对扫描版的;一般点击后保持默认参数进行压缩即可也可以用pdfsha...

    2021-06-15 405 0

本文暂时没有评论,来添加一个吧(●'◡'●)

取消回复欢迎 发表评论:

请填写验证码
QQ客服咨询电话微信报价留言评论用户中心联系我们 帮助中心返回顶部
02163063076客服电话
13816211622业务专线