Stores/save an image from the web to disk.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Net;
using System.Drawing;
namespace ExplorerPlus.Utilities
{
public static class Web
{
/// <summary>
/// Stores an image from the web to disk.
/// </summary>
/// <param name="url">image url</param>
/// <param name="path">directory path to store image to</param>
/// <returns>the new path of the saved image path</returns>
public static string SaveImageToDisk(string url, string path)
{
if (System.IO.Directory.Exists(path))
{
string savedImagePath = System.IO.Path.Combine(path, System.IO.Path.GetFileName(url));
if (!File.Exists(savedImagePath))
{
System.Drawing.Image webImage = GetImage(url);
webImage.Save(savedImagePath);
}
return savedImagePath;
}
return string.Empty;
}
/// <summary>
/// returns an image object from a web url stream.
/// </summary>
/// <param name="url">image url</param>
/// <returns>returns an image object from a web url stream.</returns>
public static System.Drawing.Image GetImage(string url)
{
Uri uri = CalculateUri(url);
if (uri.IsFile)
{
using (StreamReader reader = new StreamReader(uri.LocalPath))
{
return Image.FromStream(reader.BaseStream);
}
}
using (WebClient client = new WebClient())
{
using (Stream stream = client.OpenRead(uri))
{
return Image.FromStream(stream);
}
}
}
/// <summary>
/// Tries to evaluate a url and return its valid location.
/// </summary>
public static Uri CalculateUri(string path)
{
try
{
return new Uri(path);
}
catch (UriFormatException)
{
path = Path.GetFullPath(path);
return new Uri(path);
}
}
}
}
Related examples in the same category