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