zoukankan      html  css  js  c++  java
  • c#在sql中存取图片image示例

    这篇文章主要介绍了c#在sql中存取图片image示例,需要的朋友可以参考下

    (1)控制台应用程序下演示插入图片

    复制代码 代码如下:
    public void InsertIMG() { //将需要存储的图片读取为数据流 FileStream fs = new FileStream(@"E:c.jpg", FileMode.Open,FileAccess.Read); Byte[] btye2 = new byte[fs.Length]; fs.Read(btye2 , 0, Convert.ToInt32(fs.Length)); fs.Close();

    using (SqlConnection conn = new SqlConnection(sqlconnstr)) { conn.Open(); SqlCommand cmd = new SqlCommand(); cmd.Connection = conn; cmd.CommandText = "insert into T_Img(imgfile) values(@imgfile)"; SqlParameter par = new SqlParameter("@imgfile", SqlDbType.Image); par.Value = bt; cmd.Parameters.Add(par);

    int t=(int)(cmd.ExecuteNonQuery()); if (t > 0) { Console.WriteLine("插入成功"); } conn.Close(); } }

    (2)控制台应用程序下读出并生成图片到物理位置

    复制代码 代码如下:
    public void Read() { byte[] MyData = new byte[0]; using (SqlConnection conn = new SqlConnection(sqlconnstr)) { conn.Open(); SqlCommand cmd = new SqlCommand(); cmd.Connection = conn; cmd.CommandText = "select * from T_img"; SqlDataReader sdr = cmd.ExecuteReader(); sdr.Read(); MyData = (byte[])sdr["ImgFile"];//读取第一个图片的位流 int ArraySize= MyData.GetUpperBound(0);//获得数据库中存储的位流数组的维度上限,用作读取流的上限

    FileStream fs = new FileStream(@"c:0.jpg", FileMode.OpenOrCreate, FileAccess.Write); fs.Write(MyData, 0, ArraySize); fs.Close();   //-- 写入到c:0.jpg。 conn.Close(); Console.WriteLine("读取成功");//查看硬盘上的文件 } }

    (3)Web下picshow.aspx页将图片读取出来并写入到浏览器上呈现

    复制代码 代码如下:
    public void Read() { byte[] MyData = new byte[0]; using (SqlConnection conn = new SqlConnection(sqlconnstr)) { conn.Open(); SqlCommand cmd = new SqlCommand(); cmd.Connection = conn; cmd.CommandText = "select * from T_img"; SqlDataReader sdr = cmd.ExecuteReader(); sdr.Read(); MyData = (byte[])sdr["ImgFile"]; Response.ContentType = "image/gif"; Response.BinaryWrite(MyData); conn.Close(); Response.Write("读取成功"); }

    (4)在web中可以如上picshow.aspx页面读取并显示图片,而真正引用该图片时如下示例

    复制代码 代码如下:
    <img src="picshow.aspx" width="500" height="300" />

    (5)Winform下将图片写入到sql数据库image类型字段中的方法和以上方法基本一致,仅区别于可以利用多个对话框来帮助选取存储图片等,各个属性可以方便的利用上

    (6)Winform下读取图片在picturebox控件中显示出来

    方法一:利用MemoryStream 和System.Drawing.Image

    复制代码 代码如下:
    public void Read() { byte[] MyData = new byte[0]; using (SqlConnection conn = new SqlConnection(sqlconnstr)) { conn.Open(); SqlCommand cmd = new SqlCommand(); cmd.Connection = conn; cmd.CommandText = "select * from T_img"; SqlDataReader sdr = cmd.ExecuteReader(); sdr.Read(); MyData = (byte[])sdr["ImgFile"];

    MemoryStream mystream = new MemoryStream(MyData); //用指定的数据流来创建一个image图片 System.Drawing.Image img = System.Drawing.Image.FromStream(mystream, true);

    System.Windows.Forms.PictureBox picbox = new PictureBox(); picbox.Image = img; picbox.Left = 30; picbox.Top = 80; picbox.Width = 800; picbox.Height = 500; this.Controls.Add(picbox);

    mystream.Close(); conn.Close(); } }

    方法二:将流直接读取成图片并写入到物理位置,然后再行利用该图片呈现

    复制代码 代码如下:
    void Read() { using (SqlConnection conn = new SqlConnection(sqlconnstr)) { conn.Open(); SqlCommand cmd = new SqlCommand(); cmd.Connection = conn; cmd.CommandText = "select * from T_img"; SqlDataReader sdr = cmd.ExecuteReader(); sdr.Read();

    byte[] Image_img = (byte[])sdr["ImgFile"]; if (Image_img.Length == 0) { return; } int filelength = Image_img.Length; string imageName = "1.jpg"; string myUrl = Environment.CurrentDirectory + "\" + imageName; FileStream fs = new FileStream(myUrl, FileMode.OpenOrCreate,FileAccess.Write); BinaryWriter BW = new BinaryWriter(fs); BW.BaseStream.Write(Image_img, 0, filelength); BW.Flush(); BW.Close(); System.Windows.Forms.PictureBox picbox = new PictureBox();

    //为picbox添加图片方法一 //picbox.ImageLocation = myUrl; //picbox.Width = 800; //picbox.Height = 300;

    //为picbox添加图片方法二 Bitmap bitmap = new Bitmap(myUrl); picbox.Width = 100;//bitmap.Width; picbox.Height = 80;//bitmap.Height; picbox.Image = (Image)bitmap; picbox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; picbox.Left = 20; picbox.Top = 30;

    this.Controls.Add(picbox); conn.Close();

    } }

  • 相关阅读:
    ec20 queclocator V1. 0 test
    javascript JSON.parse and JSON.stringify
    linux command pushd popd
    learning gcc #pragma once
    learning gcc __BEGIN_DECLS and __END_DECLS
    aarch-linux-gnu-g++ install
    启用”开始“菜单中的“运行”功能
    获取本机安装的软件清单
    固定任务栏
    优化菜单显示速度
  • 原文地址:https://www.cnblogs.com/cuihongyu3503319/p/4003140.html
Copyright © 2011-2022 走看看