首页 数据库 mysql教程 把图片保存到数据库中和从数据库中读取图片

把图片保存到数据库中和从数据库中读取图片

Jun 07, 2016 pm 02:59 PM
保持 图片 数据库 读取

最近做到一个小项目,其中关系到图片的一些操作。比如:将图片保存到数据库中、从数据库中读取图片、显示图片、打印图片等。此处对这些在项目中遇到的一些琐碎知识加以总结,以便日后查找。 1、将图片作为其中的一个参数保存到数据库中 在项目中,一般是将图

  最近做到一个小项目,其中关系到图片的一些操作。比如:将图片保存到数据库中、从数据库中读取图片、显示图片、打印图片等。此处对这些在项目中遇到的一些琐碎知识加以总结,以便日后查找。

 

  1、将图片作为其中的一个参数保存到数据库中

  在项目中,一般是将图片转换成二进制流格式,然后保存到数据库中。同时数据库表中存储图片的格式一般为image。此次项目,是将图片作为一个参数,和其他几个参数一起保存到数据库中,和在网上搜索到的图片保存不太一样,此处稍作修改,但都是检测过的。

  存储步骤:

  1、搜索到图片的路径

  2、读取图片并将图片转换成二进制流格式

  3、sql语句保存到数据库中。

   贴代码: 

<span>private</span> <span>void</span> btnWrite_Click(<span>object</span><span> sender, EventArgs e)
        {
            OpenFileDialog ofd </span>= <span>new</span><span> OpenFileDialog();
            ofd.Filter </span>= <span>"</span><span>*jpg|*.JPG|*.GIF|*.GIF|*.BMP|*.BMP</span><span>"</span><span>;

            </span><span>if</span> (ofd.ShowDialog() ==<span> DialogResult.OK)
            {
                </span><span>string</span> filePath = ofd.FileName;<span>//</span><span>图片路径</span>
                FileStream fs = <span>new</span><span> FileStream(filePath, FileMode.Open);
                </span><span>byte</span>[] imageBytes = <span>new</span> <span>byte</span><span>[fs.Length];
                BinaryReader br </span>= <span>new</span><span> BinaryReader(fs);
                imageBytes </span>= br.ReadBytes(Convert.ToInt32(fs.Length));<span>//</span><span>图片转换成二进制流</span>

                <span>string</span> strSql = <span>string</span>.Format(<span>"</span><span>insert into [SBS].[dbo].[Model] ([M_QRCode],[M_Skills] ) values (@image,'2')</span><span>"</span><span>);
                </span><span>int</span> count =<span> Write(strSql,imageBytes );

                </span><span>if</span> (count > <span>0</span><span>)
                {
                    MessageBox.Show(</span><span>"</span><span>success</span><span>"</span><span>);
                }
                </span><span>else</span><span>
                {
                    MessageBox.Show(</span><span>"</span><span>failed</span><span>"</span><span>);
                }
            }
        }</span>
登录后复制

  数据库连接和保存图片语句:

把图片保存到数据库中和从数据库中读取图片把图片保存到数据库中和从数据库中读取图片

<span>private</span> <span>int</span> Write(<span>string</span> strSql,<span>byte</span><span>[] imageBytes)
        {
            </span><span>string</span> connStr = <span>"</span><span>Data Source=192.168.4.132;initial Catalog=SBS;User ID=sa;Password=sa;</span><span>"</span><span>;

            </span><span>using</span> (SqlConnection conn = <span>new</span><span> SqlConnection(connStr))
            {
                </span><span>using</span> (SqlCommand cmd = <span>new</span><span> SqlCommand(strSql, conn))
                {
                    </span><span>try</span><span>
                    {
                        conn.Open();
                        SqlParameter sqlParameter </span>= <span>new</span> SqlParameter(<span>"</span><span>@image</span><span>"</span><span>, SqlDbType.Image);
                        sqlParameter.Value </span>=<span> imageBytes;
                        cmd.Parameters.Add(sqlParameter);
                        </span><span>int</span> rows =<span> cmd.ExecuteNonQuery();
                        </span><span>return</span><span> rows;
                    }
                    </span><span>catch</span><span> (Exception e)
                    {
                        </span><span>throw</span><span>;
                    }
                }
            }
        }</span>
登录后复制
View Code

 

  2、从数据库总读取图片

  从数据库中读取图片字段,并转换成内存流生成bitmap。

  贴代码: 

<span>private</span> <span>void</span> btnRead_Click(<span>object</span><span> sender, EventArgs e)
        {
            </span><span>string</span> strSql = <span>string</span>.Format(<span>"</span><span>select M_QRCode from [SBS].[dbo].[Model] where M_id = 7</span><span>"</span>);<span>//</span><span>图片保存的字段是M_QRCode</span>
<span>            Read(strSql);
        }

        </span><span>private</span> <span>void</span> Read(<span>string</span><span> strSql)
        {
            </span><span>string</span> connStr = <span>"</span><span>Data Source=192.168.4.132;initial Catalog=SBS;User ID=sa;Password=sa;</span><span>"</span><span>;

            </span><span>using</span> (SqlConnection conn = <span>new</span><span> SqlConnection(connStr))
            {
                </span><span>using</span> (SqlCommand cmd = <span>new</span><span> SqlCommand(strSql, conn))
                {
                    conn.Open();
                    SqlDataReader sqlDr </span>=<span> cmd.ExecuteReader();
                    sqlDr.Read();
                    </span><span>byte</span>[] images = (<span>byte</span>[])sqlDr[<span>"</span><span>M_QRCode</span><span>"</span><span>];
                    MemoryStream ms </span>= <span>new</span><span> MemoryStream(images);
                    Bitmap bmp </span>= <span>new</span><span> Bitmap(ms);
                    pictureBox1.Image </span>=<span> bmp;
                }
            }
        }</span>
登录后复制

 

  3、根据图片路径显示图片

  这个比较简单,直接贴出代码 

<span>private</span> <span>void</span> btnLoad_Click(<span>object</span><span> sender, EventArgs e)
        {
            OpenFileDialog ofd </span>= <span>new</span><span> OpenFileDialog();
            ofd.Filter </span>= <span>"</span><span>*jpg|*.JPG|*.GIF|*.GIF|*.BMP|*.BMP</span><span>"</span><span>;
            </span><span>if</span> (ofd.ShowDialog() ==<span> DialogResult.OK)
            {
                pictureBox1.Image </span>=<span> Image.FromFile(ofd.FileName);
            }
        }</span>
登录后复制

 

  4、打印图片

  打印图片是在将图片显示在pictureBox的基础上进行的。

  步骤:

  1、将printDocument控件拖到界面,添加打印代码

  2、设置PrintDocument控件的Print_PrintPage事件

<span>private</span> <span>void</span> btnPrint_Click(<span>object</span><span> sender, EventArgs e)
        {
            PrintDialog printDialog </span>= <span>new</span><span> PrintDialog();
            printDialog.Document </span>= <span>this</span><span>.printDocument1;
            </span><span>if</span> (printDialog.ShowDialog() ==<span> DialogResult.OK)
            {
                </span><span>try</span><span>
                {
                    printDocument1.Print();
                }
                </span><span>catch</span><span> (Exception ex)
                {
                   printDocument1.PrintController.OnEndPrint(printDocument1, </span><span>new</span><span> System.Drawing.Printing.PrintEventArgs());
                }
            }
        }

        </span><span>private</span> <span>void</span> printDocument1_PrintPage(<span>object</span><span> sender, System.Drawing.Printing.PrintPageEventArgs e)
        {
            e.Graphics.DrawImage(pictureBox1.Image, </span><span>30</span>, <span>30</span><span>);
        }</span>
登录后复制

  

  附带着将图片转换成二进制和将二进制转换成图片专门写出来,以便于查看。 

 <span>public</span> <span>byte</span>[] ConvertBinary(<span>string</span><span> filePath)
        {
            FileStream fs </span>= <span>new</span> FileStream(filePath, FileMode.Open, FileAccess.Read);<span>//</span><span>以文件流形式读取图片</span>
            BinaryReader br = <span>new</span> BinaryReader(fs);<span>//</span><span>转换成二进制流</span>
            <span>byte</span>[] imageBytes = br.ReadBytes((<span>int</span>)fs.Length);<span>//</span><span>保存到字节数组中</span>

            <span>return</span><span> imageBytes;
        }

        </span><span>public</span> <span>void</span> ShowImage(<span>byte</span><span>[] imageBytes)
        {
            MemoryStream ms </span>= <span>new</span><span> MemoryStream(imageBytes);
            pictureBox1.Image </span>=<span> Image.FromStream(ms);
        }</span>
登录后复制

 

  在pictureBox中显示图片的三种方式: 

<span>public</span> <span>void</span><span> Method()
        {
            MemoryStream ms;
            pictureBox1.Image </span>=<span> Image.FromStream(ms);

            Bitmap bitmap;
            pictureBox1.Image </span>=<span> bitmap;

            </span><span>string</span><span> filePath;
            pictureBox1.Image </span>=<span> Image.FromFile(filePath);
        }</span>
登录后复制

 

  winform中控件combobox控件使用: 

<span>public</span> <span>void</span><span> BindCombobox()
        {
            DataTable dt </span>= <span>new</span><span> DataTable();
            dt.Columns.Add(</span><span>new</span> DataColumn(<span>"</span><span>id</span><span>"</span>, <span>typeof</span>(<span>int</span><span>)));
            dt.Columns.Add(</span><span>new</span> DataColumn(<span>"</span><span>value</span><span>"</span>, <span>typeof</span>(<span>string</span><span>)));

            </span><span>for</span> (<span>int</span> i = <span>0</span>; i 3; i++<span>)
            {
                DataRow dr </span>=<span> dt.NewRow();
                dr[</span><span>"</span><span>id</span><span>"</span>] =<span> i;
                dr[</span><span>"</span><span>value</span><span>"</span>] = <span>10</span> +<span> i;
                dt.Rows.Add(dr);
            }

            </span><span>this</span>.comboBox1.DataSource =<span> dt;
            </span><span>this</span>.comboBox1.DisplayMember = <span>"</span><span>value</span><span>"</span><span>;
            </span><span>this</span>.comboBox1.ValueMember = <span>"</span><span>id</span><span>"</span><span>; 
        }

        </span><span>public</span> <span>void</span><span> ShowValue()
        {
            </span><span>this</span>.textBox1.Text = <span>this</span><span>.comboBox1.Text;
            </span><span>this</span>.textBox2.Text = <span>this</span><span>.comboBox1.SelectedValue.ToString();
        }</span>
登录后复制

 

  以上就是一些琐碎的总结,谨作为日后学习工作使用。

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

抖音的视频怎么下载保存 抖音的视频怎么下载保存 Mar 29, 2024 pm 02:16 PM

1、打开抖音app,找到想要下载保存的视频,点击右下角的【分享】按钮。2、在出现的弹窗中,向右滑动第二排的功能按钮,找到并点击【保存本地】。3、此时会出现新的弹窗,用户能够看到该视频的下载进度,等待下载完成。4、下载完成后,会有【已保存,请去相册查看】的提示,这样刚刚下载的视频就成功的保存至用户的手机相册里面了。

Go语言如何实现数据库的增删改查操作? Go语言如何实现数据库的增删改查操作? Mar 27, 2024 pm 09:39 PM

Go语言是一种高效、简洁且易于学习的编程语言,因其在并发编程和网络编程方面的优势而备受开发者青睐。在实际开发中,数据库操作是不可或缺的一部分,本文将介绍如何使用Go语言实现数据库的增删改查操作。在Go语言中,我们通常使用第三方库来操作数据库,比如常用的sql包、gorm等。这里以sql包为例介绍如何实现数据库的增删改查操作。假设我们使用的是MySQL数据库。

视频号的视频如何保存到相册?方法分享 视频号的视频如何保存到相册?方法分享 Mar 26, 2024 am 11:21 AM

视频号是一款热门的短视频应用程序,让用户可以拍摄、编辑和分享自己制作的视频。然而,有时候我们可能会想要将这些精彩的视频保存到我们的相册中,以便在需要的时候随时回顾。所以,接下来我将分享一些方法,教你如何将视频号的视频保存到相册。可以通过视频号应用程序自带的功能来保存视频。打开应用程序,找到需要保存的视频。点击视频右下角的选项图标,会弹出一个菜单,选择“保存到相册”。这样就能将视频保存到手机相册中。方法二是通过截屏的方式保存视频。这种方法比较直接,但是保存的图片会包含视频控制条等元素,不够纯净。你

在PHP中使用MySQLi建立数据库连接的详尽教程 在PHP中使用MySQLi建立数据库连接的详尽教程 Jun 04, 2024 pm 01:42 PM

如何在PHP中使用MySQLi建立数据库连接:包含MySQLi扩展(require_once)创建连接函数(functionconnect_to_db)调用连接函数($conn=connect_to_db())执行查询($result=$conn->query())关闭连接($conn->close())

PPT中插入图片版式六边形群集的操作方法 PPT中插入图片版式六边形群集的操作方法 Mar 26, 2024 pm 05:10 PM

1、打开幻灯片,插入所有图片。2、点击图片工具|格式|图片版式,选择六边形群集。3、然后在左侧的文本框中键入文本内容。4、选中该图片,系统会激活SmartArt工具菜单。5、点击设计菜单,再找到SmartArt样式工具集,再点击更改颜色按钮。6、在弹出的主题颜色下拉菜单中选择自己想要的颜色。7、设计完成之后的效果如下图所示:

Hibernate 如何实现多态映射? Hibernate 如何实现多态映射? Apr 17, 2024 pm 12:09 PM

Hibernate多态映射可映射继承类到数据库,提供以下映射类型:joined-subclass:为子类创建单独表,包含父类所有列。table-per-class:为子类创建单独表,仅包含子类特有列。union-subclass:类似joined-subclass,但父类表联合所有子类列。

iOS 18 新增'已恢复”相册功能 可找回丢失或损坏的照片 iOS 18 新增'已恢复”相册功能 可找回丢失或损坏的照片 Jul 18, 2024 am 05:48 AM

苹果公司最新发布的iOS18、iPadOS18以及macOSSequoia系统为Photos应用增添了一项重要功能,旨在帮助用户轻松恢复因各种原因丢失或损坏的照片和视频。这项新功能在Photos应用的"工具"部分引入了一个名为"已恢复"的相册,当用户设备中存在未纳入其照片库的图片或视频时,该相册将自动显示。"已恢复"相册的出现为因数据库损坏、相机应用未正确保存至照片库或第三方应用管理照片库时照片和视频丢失提供了解决方案。用户只需简单几步

深入解析HTML如何读取数据库 深入解析HTML如何读取数据库 Apr 09, 2024 pm 12:36 PM

HTML无法直接读取数据库,但可以通过JavaScript和AJAX实现。其步骤包括建立数据库连接、发送查询、处理响应和更新页面。本文提供了利用JavaScript、AJAX和PHP来从MySQL数据库读取数据的实战示例,展示了如何在HTML页面中动态显示查询结果。该示例使用XMLHttpRequest建立数据库连接,发送查询并处理响应,从而将数据填充到页面元素中,实现了HTML读取数据库的功能。

See all articles