文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

C#从SQL server数据库中读取l图片和存入图片

2024-04-02 19:55

关注

一、从图片中获得二进制值的基本方法:Image.Save 方法 (String, ImageFormat)
这会将保存 Image 写入指定的文件中指定的格式。

命名空间: System.Drawing
程序集: System.Drawing(位于 System.Drawing.dll)

语法:
public void Save( string filename, ImageFormat format)
参数
filename
Type: System.String
一个字符串,包含要保存此文件的名称 Image。

format
Type: System.Drawing.Imaging.ImageFormat
用于此 ImageFormat 的 Image。(包括.JGP、png等格式)

异常

ArgumentNullException: filename 或 format 是 null.

ExternalException: 使用错误的图像格式保存图像。- 或 - 图像已保存到同一文件从创建它。

二、Bitmap.Save 方法
命名空間: System.Drawing
組件: System.Drawing (於 System.Drawing.dll)

多載清單:
1、Save(Stream, ImageCodecInfo, EncoderParameters) :使用指定的編碼器和影像編碼器參數,將此影像儲存至指定的資料流。(繼承自 Image。)
2、Save(Stream, ImageFormat) 將這個影像以指定的格式儲存至指定的資料流。(繼承自 Image。)
3、Save(String) 這會將儲存 Image 到指定的檔案或資料流。(繼承自 Image。)
4、Save(String, ImageCodecInfo, EncoderParameters) 這會將儲存 Image 至指定的檔案,以指定的編碼器和影像編碼器參數。(繼承自 Image。)
5、Save(String, ImageFormat) 這會將儲存 Image 至指定的檔案中指定的格式。(繼承自 Image。)

三、将图片保存在数据库和从数据库中还原程序的示例:

//存图片
private void button1_Click(object sender, EventArgs e)
{
#region //从文件中读取图片
FileStream fs = new FileStream(@"D:\i\2017年资料\SPC\SPC\30.jpg", FileMode.Open, FileAccess.Read);
byte[] imagebytes = new byte[fs.Length];
BinaryReader br = new BinaryReader(fs);
imagebytes = br.ReadBytes(Convert.ToInt32(fs.Length));
SqlConnection mycn = new SqlConnection("server=192.168.1.14;database=fengyp;uid=sa;pwd=");
mycn.Open();
SqlCommand com = new SqlCommand("insert into dbo.试验图片存取 values(10,@ImageList)", mycn);

        com.Parameters.Add("ImageList", SqlDbType.Image);

        com.Parameters["ImageList"].Value = imagebytes;

        com.ExecuteNonQuery();

        mycn.Close();
                     #endregion

                    #region   //从picturebox中读取图片 
                     //将Image转换成流数据,并保存为byte[] 
        MemoryStream mstream = new MemoryStream();
        pictureBox1.Image.Save(mstream, System.Drawing.Imaging.ImageFormat.Bmp);
        byte[] bytes = new Byte[mstream.Length];
        mstream.Position = 0;
        mstream.Read(bytes, 0, bytes.Length);
        mstream.Close();
                    SqlConnection mycn = new   SqlConnection("server=192.168.1.14;database=fengyp;uid=sa;pwd=");
        mycn.Open();

SqlCommand com = new SqlCommand("insert into dbo.试验图片存取 values(11,@ImageList)", mycn);

        com.Parameters.Add("ImageList", SqlDbType.Image);

        com.Parameters["ImageList"].Value = bytes;

        com.ExecuteNonQuery();

        mycn.Close();
                    #endregion

                    }
    //从数据库读取图片并还原
    private void button2_Click(object sender, EventArgs e)

    {

        byte[] imagebytes = null;

        //打开数据库

        SqlConnection con = new SqlConnection("server=192.168.1.14;database=fengyp;uid=sa;pwd=");

        con.Open();

        SqlCommand com = new SqlCommand("select 图片 from dbo.试验图片存取 where 序号=10", con);

        SqlDataReader dr = com.ExecuteReader();

        while (dr.Read())
        {

            imagebytes = (byte[])dr.GetValue(0);

        }

        dr.Close();

        com.Clone();

        con.Close();

        MemoryStream ms = new MemoryStream(imagebytes);

        Bitmap bmpt = new Bitmap(ms);

        pictureBox2.Image = bmpt;
                     }
阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯