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. pytorch Debug —交互式调试工具Pdb (ipdb是增强版的pdb)-1-使用说明

    初学时大多使用print或log调试程序,这在小规模的程序下很方便 但是更好的方法是一边运行一边检查里面的变量和方法 1.Pdb Pdb是一个交互式的调试工具,集成于Python标准库中 Pdb能让你 ...

  2. binarySearch(int[] a,int fromIndex,int toIndex, int key)的用法

    package com.Summer_0420.cn; import java.util.Arrays; /** * @author Summer * binarySearch(int[] a,int ...

  3. Git中删除指定文件

    之前的博客Git基础使用教程介绍了Git这个开源分布式管理系统的一些基础操作,这篇博客,介绍下如何利用Git删除远程仓库的文件... 1.拉取远程仓库的文件到本地 git clone xxx 如果还未 ...

  4. odoo常用widget

      widget=”statusbar” 头部状态条标签widget=”email” 电子邮件地址标签widget=”selection” 下拉选择标签widget=”mail_followers” ...

  5. 用Python实现大文件分割

    python代码如下: import sys,os kilobytes = 1024 megabytes = kilobytes*1000 chunksize = int(200*megabytes) ...

  6. 下拉框选择blur与click冲突问题

    缘由:今天在做下拉框选择时,遇到click和blur冲突问题:具体现象如下 1.intput框获取焦点(focus事件)时显示隐藏的下拉框,失去焦点(blur事件)则隐藏下拉框 2.点击选择(clic ...

  7. IntelliJ IDEA(四) :Settings(上)

    前言 IDEA是一个智能开发工具,每个开发者的使用习惯不同,如何个性化自己的IDEA?我们可以通过Settings功能来设置.Settings文件是IDEA的配置文件,通过他可以设置主题,项目,插件, ...

  8. 使用后台线程BackgroundWorker处理任务的总结

    在一些耗时的操作过程中,在长时间运行时可能会导致用户界面 (UI) 处于停止响应状态,用户在这操作期间无法进行其他的操作,为了不使UI层处于停止响应状态,我们倾向推荐用户使用BackgroundWor ...

  9. 图解Redis之数据结构篇——链表

    前言     Redis链表为双向无环链表!     图解Redis之数据结构篇--简单动态字符串SDS提到Redis使用了简单动态字符串,链表,字典(散列表),跳跃表,整数集合,压缩列表这些数据结构 ...

  10. vue2.0之axios使用详解

    axios 基于 Promise 的 HTTP 请求客户端,可同时在浏览器和 node.js 中使用 功能特性 在浏览器中发送 XMLHttpRequests 请求 在 node.js 中发送 htt ...