C# でイメージをダウンロード
- 
          
            C# の WebClientクラスでイメージをダウンロードする
- 
          
            C# のビットマップクラスでフォーマットを知らなくてもイメージをダウンロードする
- 
          
            C# の Image.FromStream()関数を使用して、形式を知らずにイメージをダウンロードする
 
このチュートリアルでは、C# でイメージをダウンロードする方法について説明します。
C# の WebClient クラスでイメージをダウンロードする
    
WebClient クラスは、C# の URL との間でデータを送受信するための機能を提供します。WebClient.DownloadFile(url, path) 関数は、特定の URL url からファイルをダウンロードし、それをパスに保存します。WebClient.DownloadFile() 関数を使用して、URL からイメージをダウンロードできます。
using System;
using System.Net;
using System.Runtime.InteropServices;
namespace download_image {
  class Program {
    static void download() {
      string url =
          "https://upload.wikimedia.org/wikipedia/commons/thumb/e/ea/Breathe-face-smile.svg/1200px-Breathe-face-smile.svg.png";
      using (WebClient client = new WebClient()) {
        client.DownloadFile(new Uri(url), "Image.png");
      }
    }
    static void Main(string[] args) {
      try {
        download();
      } catch (ExternalException e) {
        Console.WriteLine(e.Message);
      } catch (ArgumentNullException e) {
        Console.WriteLine(e.Message);
      }
    }
  }
}
上記のコードでは、URL url からイメージをダウンロードし、C# の client.DownloadFile(new Uri(url), "Image.png") 関数を使用してパス Image.png に保存しました。
C# のビットマップクラスでフォーマットを知らなくてもイメージをダウンロードする
上記の例では、ダウンロードするイメージファイル形式を知っている必要があります。次に、URL からダウンロードして保存します。ただし、イメージファイル形式がわからない場合は、ビットマップクラスを使用できます。Bitmap クラスは、C# でイメージを操作するためのメソッドを提供します。このメソッドは、ビットマップクラスが処理できるすべての形式でファイルをダウンロードして保存します。Bitmap.Save(path, format) 関数は、ビットマップの内容を形式の形式で path 内のファイルに書き込みます。ImageFormat クラスを Bitmap.Save() 関数内で使用して、保存するイメージの形式を手動で指定できます。次のコード例は、C# の Bitmap.Save() 関数を使用して、形式を知らなくても URL からイメージをダウンロードする方法を示しています。
using System;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Net;
using System.Runtime.InteropServices;
namespace download_image {
  class Program {
    static void SaveImage() {
      string url =
          "https://upload.wikimedia.org/wikipedia/commons/thumb/e/ea/Breathe-face-smile.svg/1200px-Breathe-face-smile.svg.png";
      WebClient client = new WebClient();
      Stream stream = client.OpenRead(url);
      Bitmap bitmap = new Bitmap(stream);
      if (bitmap != null) {
        bitmap.Save("Image1.png", ImageFormat.Png);
      }
      stream.Flush();
      stream.Close();
      client.Dispose();
    }
    static void Main(string[] args) {
      try {
        SaveImage();
      } catch (ExternalException e) {
        Console.WriteLine(e.Message);
      } catch (ArgumentNullException e) {
        Console.WriteLine(e.Message);
      }
    }
  }
}
イメージをダウンロードして保存する SaveImage() 関数を定義しました。WebClient クラスを使用して、url に Web リクエストを送信しました。Stream クラスを使用して、client.OpenRead(url) 関数からデータを読み取りました。Bitmap クラスを使用して、ストリームをビットマップ形式に変換しました。次に、bitmap.Save() 関数を使用して、ImageFormat.Png の形式でパス Image1.png に bitmap を保存しました。
C# の Image.FromStream() 関数を使用して、形式を知らずにイメージをダウンロードする
C# の Image.FromStream() 関数を使用して、前の例と同じことを行うこともできます。Image.FromStream() 関数は、C# のメモリストリームからイメージファイルを読み取ります。このために、最初にすべてのデータを URL からバイトの配列にダウンロードできます。次に、その配列を MemoryStream クラスのオブジェクトにロードできます。次に、Image.FromStream() 関数を使用して、MemoryStream クラスのオブジェクトからイメージを読み取ることができます。次に、C# の Image.Save(path, format) 関数を使用して、このイメージを特定の形式のパスに保存できます。次のコード例は、C# の Image.FromStream() 関数を使用して、フォーマットを知らなくても URL からイメージをダウンロードする方法を示しています。
using System;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Net;
using System.Runtime.InteropServices;
namespace download_image {
  class Program {
    static void SaveImage() {
      string url =
          "https://upload.wikimedia.org/wikipedia/commons/thumb/e/ea/Breathe-face-smile.svg/1200px-Breathe-face-smile.svg.png";
      using (WebClient webClient = new WebClient()) {
        byte[] data = webClient.DownloadData(url);
        using (MemoryStream mem = new MemoryStream(data)) {
          using (var yourImage = Image.FromStream(mem)) {
            yourImage.Save("Image2.png", ImageFormat.Png);
          }
        }
      }
    }
    static void Main(string[] args) {
      try {
        SaveImage();
      } catch (ExternalException e) {
        Console.WriteLine(e.Message);
      } catch (ArgumentNullException e) {
        Console.WriteLine(e.Message);
      }
    }
  }
}
イメージをダウンロードして保存する SaveImage() 関数を定義しました。バイトの配列 data を使用して、webClient.DownloadData(url) 関数によって返されたデータを格納しました。次に、MemoryStream クラスのインスタンス mem を data で初期化しました。次に、Image.FromStream(mem) 関数を使用して、mem からイメージ yourImage を読み取ります。最後に、yourImage.Save("Image2.png", ImageFormat.Png) 関数を使用して、イメージ yourImage を ImageFormat.Png フォーマットで Image2.png パスに保存しました。
Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.
LinkedIn