从网络中获取图片显示到Image控件并保存到磁盘

一、从网络中获取图片信息:

 1   /// <summary>
 2         /// 获取图片
 3         /// </summary>
 4         /// <param name="url">Url</param>
 5         /// <returns>BitmapImage</returns>
 6         public BitmapImage GetImage(string url)
 7         {
 8             BitmapImage image=null;
 9             try
10             {
11                 image = new BitmapImage();
12                 long fileLength = 0;
13                 //从url指定的网络地址获取图片信息
14                 WebRequest webReq = WebRequest.Create(url);
15                 WebResponse webRes = webReq.GetResponse();
16                 fileLength = webRes.ContentLength;
17                 Stream srm = webRes.GetResponseStream();
18                 byte[] bufferbyte = new byte[fileLength];
19                 int allByte = (int) bufferbyte.Length;
20                 int startByte = 0;
21                 while (fileLength > 0)
22                 {
23                     int downByte = srm.Read(bufferbyte, startByte, allByte);
24                     if (downByte == 0)
25                     {
26                         break;
27                     }
28                     startByte += downByte;
29                     allByte -= downByte;
30                 }
31                 //以流的形式初始化图片
32                 image.BeginInit();
33                 image.StreamSource = new MemoryStream(bufferbyte);
34                 image.EndInit();
35                 srm.Close();
36                 webRes.Close();
37             }
38             catch (Exception)
39             {
40                 Console.WriteLine("获取图片信息失败");
41             }
42             return image;
43         }

二、在Image控件中显示获取到的图片

1   public void ShowImage(BitmapImage img)
2         {
3             image.Source = img;
4             image.Width = img.PixelWidth;
5             image.Height = img.PixelHeight;
6         }

image是Image控件

三、保存Image到磁盘

 1  /// <summary>
 2         /// 保存图片到磁盘
 3         /// </summary>
 4         /// <param name="img"></param>
 5         public void SaveImage(Image img)
 6         {
 7             //img为Image控件
 8             BitmapSource bsrc = (BitmapSource)img.Source;
 9             //保存文件对话框
10             SaveFileDialog sf = new SaveFileDialog();
11             //设定默认保存类型为Png
12             sf.DefaultExt = ".png";
13             //指定用户只能下载jpg和png格式的图片
14             sf.Filter = "JPG 图片 (*.jpg)|*.jpg|PNG 图片 (*.png)|*.png";
15             if (sf.ShowDialog() == true)
16             {
17                 PngBitmapEncoder pngE = new PngBitmapEncoder();
18                 pngE.Frames.Add(BitmapFrame.Create(bsrc));
19                 using (Stream stream = File.Create(sf.FileName))
20                 {
21                     pngE.Save(stream);
22                 }
23             }
24         }

时间: 2024-10-05 02:48:10

从网络中获取图片显示到Image控件并保存到磁盘的相关文章

Cocos2d-x3.0 从代码中获取cocostudio编辑的UI控件

依据名字查找控件 须要包括的头文件及名字空间: #include "cocostudio/CocoStudio.h" #include "ui/CocosGUI.h" using namespace cocos2d::ui; using namespace cocostudio; 注:project中须要附加包括的头文件文件夹:$(EngineRoot)cocos\editor-support.由于cocostudio在此文件夹下. 获取UI控件的方法例如以下: m

WPF如何将数据库中的二进制图片数据显示在Image控件上

首先在xaml文件里定义一个Image控件,取名为img MemoryStream stream = new MemoryStream(获得的数据库对象): BitMapImage bmp = new BitMapImage(); bmp.BeginInit();//初始化 bmp.StreamSource = stream;//设置源 bmp.EndInit();//初始化结束 img.Source = bmp;//设置图像Source 很多人用这个方法都没有初始化BitMapImage ,这

从网络中获取文件,上传到服务器

1 /** 2 * 模拟form表单的形式 ,上传文件 以输出流的形式把文件写入到url中,然后用输入流来获取url的响应 3 * 4 * @param url 5 * 请求地址 form表单url地址 6 * @param filePath 7 * 文件在服务器保存路径 8 * @return JSONObject 9 * url的响应信息返回值 10 * @throws IOException 11 * 文件不存在 12 */ 13 public static JSONObject send

Android从Camera中获取图片的两种方法

方法一: 此方法会由Camera直接产生照片回传给应用程序,但是返回的是压缩图片,显示不清晰 /**   启动Camera */ private void intentCamera(){     try {          Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);          startActivityForResult(cameraIntent, 0);      } catch (Activi

Android相机、相册获取图片显示(压缩)并保存到SD卡

做过类似需求的同学都知道,在Activity中通过如下代码可以启动相机,然后在重写的onActivityResult方法中可以获取到返回的照片数据: Intent openCameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(openCameraIntent, TAKE_PICTURE); 在onActivityResult方法里通过Intent的getData方法获取的数据转换成bi

从相册中获取图片

Intent intent=new Intent(); intent.setAction("android.intent.action.PICK"); intent.setType("image/*"); startActivityForResult(intent, 100); 在activity中重写onactivityForResult()方法,在里面获取得到的数据 从相册中获取图片

Android从相册中获取图片以及路径

首先是相册图片的获取: private final String IMAGE_TYPE = "image/*"; private final int IMAGE_CODE = 0;   //这里的IMAGE_CODE是自己任意定义的 //使用intent调用系统提供的相册功能,使用startActivityForResult是为了获取用户选择的图片 Intent getAlbum = new Intent(Intent.ACTION_GET_CONTENT); getAlbum.set

[Android] 拍照、截图、保存并显示在ImageView控件中

最近在做Android的项目,其中部分涉及到图像处理的内容.这里先讲述如何调用Camera应用程序进行拍照,并截图和保存显示在ImageView控件中以及遇到的困难和解决方法. PS:作者购买了本<Android第一行代码 著:郭霖>,参照里面的内容完成(推荐该书,前面的布局及应用非常不错).网上这类资料非常多,作者仅仅分享给初学者同时在线记录些内容,希望对大家有所帮助. 首先,设置activity_main.xml为LinearLayout布局且 android:orientation=&q

Android中显示进度的控件

显示进度的控件-------------------------ProgressBar:进度条核心属性包括:1) style:表示进度条的显示样式2) android:max:表示进度条的最大刻度3) android:progress:表示进度条当前的进度控制显示进度的方法:void setProgress(int progress)如果进度条没有配置为水平的进度条,则会显示为圆形进度条,这种圆形进度条没有进度的概念,通常用于例如关机.更新系统等时间完全不确定的.亦可以不需要告之用户进度的应用场