private void getWebPicture_Click(object sender, EventArgs e)
{
WebRequest request = WebRequest.Create("http://d.hiphotos.baidu.com/image/h%3D200/sign=6008b360f336afc3110c38658318eb85/a1ec08fa513d26973aa9f6fd51fbb2fb4316d81c.jpg");
WebResponse response = request.GetResponse();
Stream s=response.GetResponseStream();
byte[] data = new byte[];
int length = ;
MemoryStream ms = new MemoryStream();
while ((length=s.Read(data,,data.Length))>)
{
ms.Write(data, , length);
}
ms.Seek(, SeekOrigin.Begin);
pictureBox1.Image = Image.FromStream(ms);
}

byte[]数组转换成Image:

   private byte[] ImageTobyteshuzu(Image image)
{
MemoryStream ms = new MemoryStream();
Bitmap bi = new Bitmap(image);
bi.Save(ms, image.RawFormat);
byte[] data = new byte[ms.Length];
ms.Seek(, SeekOrigin.Begin);
ms.Read(data, , data.Length);
return data;
}

Image转换成byte[]数组:

     private Image byteshuzuToImage(byte[] imageBytes)
{
MemoryStream ms = new MemoryStream();
ms.Write(imageBytes, , imageBytes.Length);
ms.Seek(, SeekOrigin.Begin);
Image i = Image.FromStream(ms);
return i;
}

最后说一下,使用了memeoryStream的write和read方法以后,最好一定要把流指针回到最开始的地方!!! 我因为这个问题老是转换失败,困扰了很久!!!  写这篇博客,以便巩固。

wpf:将iv1上获取到的网络图片存到数据库,并从数据库中读取并显示到Image上:

        private void Button_Click_2(object sender, RoutedEventArgs e)
        {
            if (iv1.Source!=null)
            {
                BitmapImage bi = (BitmapImage)iv1.Source;
                Stream s=bi.StreamSource;
                s.Seek(, SeekOrigin.Begin);
                byte[] data = new byte[s.Length];
                s.Read(data, , data.Length);
                saveImageToSqlServer(data);
                getImageFromSqlServer();
            }
            else
            {
                MessageBox.Show("请先获取图片!");
            }
        }

保存到数据库:

        private void saveImageToSqlServer(byte[] data)
{
SqlConnection conn = new SqlConnection(connectString);
conn.Open();
SqlCommand comm = new SqlCommand();
comm.Connection = conn;
comm.CommandText = "delete from tb1";
comm.ExecuteNonQuery();
comm.Connection = conn;
comm.CommandText = "insert into tb1(Image) values(@Image)";//注意这里要加@Image
comm.Parameters.Add("@Image", System.Data.SqlDbType.Image,data.Length);
comm.Parameters[].Value = data;
comm.ExecuteNonQuery();
conn.Close();
}

从数据库中读取:

        private void getImageFromSqlServer()
{
SqlDataAdapter sda = new SqlDataAdapter("select * from tb1", connectString);
DataTable dt = new DataTable();
sda.Fill(dt);
byte[] data = (byte[])dt.Rows[][];
MemoryStream ms = new MemoryStream();
ms.Write(data, , data.Length);
ms.Seek(, SeekOrigin.Begin);
BitmapImage bi = new BitmapImage();
bi.BeginInit();
bi.StreamSource = ms;
bi.EndInit();
iv2.Source = bi;
}

原作者:https://blog.csdn.net/qq_30975833/article/details/52294603

获取网络图片并显示在picturbox上,byte[]数组转换成Image:的更多相关文章

  1. C# byte数组转换成List<String>

    byte[] bys=buffer; string[] AllDataList=  Encoding.Default.GetString(bys).Split(Environment.NewLine. ...

  2. C#中如何把byte[]数组转换成其他类型

    http://bbs.csdn.net/topics/20447859 byte[] bytes = new byte[256]; //receive some stream from network ...

  3. jquery通过AJAX从后台获取信息并显示在表格上的类

    前一阵我写了:<jquery通过AJAX从后台获取信息并显示在表格上,并支持行选中.>现在,我把他们处理了一下,不需要每次写代码了: 具体代码如下: //获取数据并显示数据表格 funct ...

  4. jquery通过AJAX从后台获取信息并显示在表格上,并支持行选中

    不想用Easyui的样式,但是想要他的表格功能,本来一开始是要到网上找相关插件的,但是没找到就开始自己写,没想到这么简单. 后台代码:(这个不重要) public ActionResult GetDi ...

  5. C# byte数组转成Bitmap对象

    方法一: /// <summary> /// 将数组转换成彩色图片 /// </summary> /// <param name="rawValues" ...

  6. Java 基础类型转换byte数组, byte数组转换基础类型

    Java 基础类型转换byte数组, byte数组转换基础类型 Java类型转换 java类对象转化为byte数组

  7. android中的byte数组转换(转)

    /** * 将一个单字节的byte转换成32位的int * * @param b * byte * @return convert result */ public static int unsign ...

  8. c# 将byte数组保存成图片

    将byte数组保存成图片: 方式一:System.IO.File.WriteAllBytes(@"c:\test.jpg", bytes); 方式二:MemoryStream ms ...

  9. C语言:将ss所指字符串中所有下标为奇数位上的字母转换成大写,若不是字母,则不转换。-删除指针p所指字符串中的所有空白字符(包括制表符,回车符,换行符)-在带头结点的单向链表中,查找数据域中值为ch的结点,找到后通过函数值返回该结点在链表中所处的顺序号,

    //将ss所指字符串中所有下标为奇数位上的字母转换成大写,若不是字母,则不转换. #include <stdio.h> #include <string.h> void fun ...

随机推荐

  1. docker 2 docker介绍

    docker是基于go语言实现的云开源项目 docker的主要目标是‘build ,ship and run any app,anywhere’,也就是说通过对应用程序组件的封装,分发,部署,运行等生 ...

  2. Flask 框架 重定向,捕获异常,钩子方法及使用jsonify在网页返回json数据

    Flask 框架中常用到重定向方法来实现路由的跳转 ,路由跳转又分为站内跳转和站外跳转 常用的站内跳转方法为url_for  而常用的站外跳转为redirect 在这里提示一下: 在使用两种方法是须调 ...

  3. Linux VNC安装

    cat /etc/centos-release CentOS Linux release 7.4.1708 (Core) uname -r 3.10.0-693.el7.x86_64 VNC下载:ht ...

  4. 【LOJ 2144】「SHOI2017」摧毁「树状图」

    LOJ 2144 84pts 首先\(op2\)很简单.直接并查集一搞就好了(话说我现在什么东西都要写个并查集有点...) 然后\(op0\)我不会,就直接\(O(n^2)\)枚举一下\(P\)这个人 ...

  5. Storm知识点

    1. 离线计算是什么? 离线计算:批量获取数据.批量传输数据.周期性批量计算数据.数据展示 代表技术:Sqoop批量导入数据.HDFS批量存储数据.MapReduce批量计算数据.Hive批量计算数据 ...

  6. Maven的porfile与SpringBoot的profile结合使用详解

        使用maven的profile功能,我们可以实现多环境配置文件的动态切换,可参考我的上一篇博客.但随着SpringBoot项目越来越火,越来越多人喜欢用SpringBoot的profile功能 ...

  7. Python从菜鸟到高手(7):字符串

    1. 单引号字符串和转义符   字符串与数字一样,都是值,可以直接使用,在Python控制台中直接输入字符串,如"Hello World",会按原样输出该字符串,只不过用单引号括了 ...

  8. Git 使用vi或vim命令打开、关闭、保存文件

    1 vi & vim 有两种工作模式: (1)命令模式:接受.执行 vi & vim 操作命令的模式,打开文件后的默认模式: (2)编辑模式:对打开的文件内容进行 增.删.改 操作模式 ...

  9. H5 18-序选择器

    18-序选择器 我是标题 我是段落1 我是段落2 我是段落3 我是段落4 我是段落5 我是段落6 我是段落7 我是段落8 --> 我是段落1 我是段落2 我是段落2 我是标题 <!DOCT ...

  10. BZOJ4289 Tax 最短路建模

    给定一个带边权的无向图,求1到n的最小代价路径.经过一个点的代价是路径上这个点的入边和出边的较大权值. \(n \le 100000, m \le 200000\). 一般的建图是考虑每个点,其入边和 ...