从网络中获取图片显示到Image控件并保存到磁盘
一、从网络中获取图片信息:
/// <summary>
/// 获取图片
/// </summary>
/// <param name="url">Url</param>
/// <returns>BitmapImage</returns>
public BitmapImage GetImage(string url)
{
BitmapImage image=null;
try
{
image = new BitmapImage();
long fileLength = ;
//从url指定的网络地址获取图片信息
WebRequest webReq = WebRequest.Create(url);
WebResponse webRes = webReq.GetResponse();
fileLength = webRes.ContentLength;
Stream srm = webRes.GetResponseStream();
byte[] bufferbyte = new byte[fileLength];
int allByte = (int) bufferbyte.Length;
int startByte = ;
while (fileLength > )
{
int downByte = srm.Read(bufferbyte, startByte, allByte);
if (downByte == )
{
break;
}
startByte += downByte;
allByte -= downByte;
}
//以流的形式初始化图片
image.BeginInit();
image.StreamSource = new MemoryStream(bufferbyte);
image.EndInit();
srm.Close();
webRes.Close();
}
catch (Exception)
{
Console.WriteLine("获取图片信息失败");
}
return image;
}
二、在Image控件中显示获取到的图片
public void ShowImage(BitmapImage img)
{
image.Source = img;
image.Width = img.PixelWidth;
image.Height = img.PixelHeight;
}
image是Image控件
三、保存Image到磁盘
/// <summary>
/// 保存图片到磁盘
/// </summary>
/// <param name="img"></param>
public void SaveImage(Image img)
{
//img为Image控件
BitmapSource bsrc = (BitmapSource)img.Source;
//保存文件对话框
SaveFileDialog sf = new SaveFileDialog();
//设定默认保存类型为Png
sf.DefaultExt = ".png";
//指定用户只能下载jpg和png格式的图片
sf.Filter = "JPG 图片 (*.jpg)|*.jpg|PNG 图片 (*.png)|*.png";
if (sf.ShowDialog() == true)
{
PngBitmapEncoder pngE = new PngBitmapEncoder();
pngE.Frames.Add(BitmapFrame.Create(bsrc));
using (Stream stream = File.Create(sf.FileName))
{
pngE.Save(stream);
}
}
}
从网络中获取图片显示到Image控件并保存到磁盘的更多相关文章
- VS编程,编辑WPF过程中,点击设计器中界面某一控件,在XAML中高亮突出显示相应的控件代码的设置方法。
原文:VS编程,编辑WPF过程中,点击设计器中界面某一控件,在XAML中高亮突出显示相应的控件代码的设置方法. 版权声明:我不生产代码,我只是代码的搬运工. https://blog.csdn.net ...
- Cocos2d-x3.0 从代码中获取cocostudio编辑的UI控件
依据名字查找控件 须要包括的头文件及名字空间: #include "cocostudio/CocoStudio.h" #include "ui/CocosGUI.h&qu ...
- WinForm中获取Listbox、DataGridView等控件某行对应的数据
Listbox:listbox.SelectedItem as XXX DataGridView:dataGridView1.Rows[i].Cells[1].Value.ToString()
- WPF如何将数据库中的二进制图片数据显示在Image控件上
首先在xaml文件里定义一个Image控件,取名为img MemoryStream stream = new MemoryStream(获得的数据库对象): BitMapImage bmp = new ...
- ios 从网络上获取图片并在UIImageView中显示
ios 从网络上获取图片 -(UIImage *) getImageFromURL:(NSString *)fileURL { NSLog(@"执行图片下载函数"); UIIm ...
- Android 多线程:使用Thread和Handler (从网络上获取图片)
当一个程序第一次启动时,Android会同时启动一个对应的主线程(Main Thread),主线程主要负责处理与UI相关的事件,如:用户的按键事件,用户接触屏幕的事件以及屏幕绘图事件,并把相关的事件分 ...
- Android相机、相册获取图片显示并保存到SD卡
Android相机.相册获取图片显示并保存到SD卡 [复制链接] 电梯直达 楼主 发表于 2013-3-13 19:51:43 | 只看该作者 |只看大图 本帖最后由 happy小妖同学 ...
- 【iOS开发-从网络上获取图片尺寸】
实际开发过程中,容易碰到从网络上获取图片尺寸的场景,比如一个UIImageView要装载从网络上获取的图片,但要先设置其frame,此时又不知道图片尺寸,就要从网络上获取尺寸了.为了最好的用户体验,一 ...
- 从网络上获取图片并保存在sdCard上
package com.aib.soft; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileO ...
随机推荐
- 在seajs中使用require加载静态文件的问题
注意,在seajs中使用require加载静态文件时,必须使用常量,不能用变量.如果一定要用变量,请使用require.async var html = require("view/sys/ ...
- Android permission 访问权限大全
程序执行需要读取到安全敏感项必需在androidmanifest.xml中声明相关权限请求, 完整列表如下: android.permission.ACCESS_CHECKIN_PROPERTIES ...
- RadioButton 的background属性表现特征
对于radiaoButton,应该很多人都用过.下面看一个场景 上方时radiogroup,细致观察发现左1,文字开始位置和右1文字开始位置不同,这是为何呢? 查看布局: <RadioB ...
- 关于fork的一道经典面试题
这是一道面试题,问程序最终输出几个“-”: #include<stdio.h> #include<sys/types.h> #include<unistd.h> i ...
- 图文详解远程部署ASP.NET MVC 5项目 [转载]
话外篇: 由于感觉自己的机器比较慢,配置不好,所以最近想把之前的项目部署到实验室的服务器上,但是由于常不在实验室,所以在想能不能远程部署.因此今天专门研究了一下具体的过程,下面和大家分享一下.本人新手 ...
- 字符集与Mysql字符集处理(一)
一.字符集总结 其实大多数的知识在这篇文章里已经讲得非常清楚了.这里只是讲一下自己的感悟. 1. UTF-8虽然是以UTF(unicode transfermation format)开头的,但是 ...
- maven -- 问题解决(一)解决eclipse中maven项目出现的问题
配置项目时出现的错误: error: Cannot change version of project facet Dynamic Web Module to 2.5. error: One or m ...
- ionic 通过下载apk升级App
上篇通过更新文件升级APP,如果遇到了比如更新插件之类的问题,上篇是无法解决的,所以为了解决这个问题,需要下载apk文件升级APP. 1.配置文件如下:{'appVersion':'1.0.0', ...
- mysql中连接失败2003错误解决办法
在使用mysql数据库,新建连接时,会报2003-Can't connect to server on 'localhost'(10038)错误,原因主要是MYSQL服务没有启动起来,但是进入:计算机 ...
- Android 布局之GridLayout
Android 布局之GridLayout 1 GridLayout简介 GridLayout是Android4.0新提供的网格矩阵形式的布局控件. GridLayout的继承关系如下:java.la ...