C#에서 이미지 다운로드

Muhammad Maisam Abbas 2024년2월16일
  1. C#에서WebClient클래스를 사용하여 이미지 다운로드
  2. C#의Bitmap클래스를 사용하여 형식을 모르고 이미지 다운로드
  3. C#의Image.FromStream()함수를 사용하여 형식을 모르고 이미지 다운로드
C#에서 이미지 다운로드

이 자습서에서는 C#에서 이미지를 다운로드하는 방법에 대해 설명합니다.

C#에서WebClient클래스를 사용하여 이미지 다운로드

WebClient클래스는 C#의 URL로 데이터를 보내고받는 기능을 제공합니다. WebClient.DownloadFile(url, path)함수는 특정 URL url에서 파일을 다운로드하여path에 저장합니다. 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#의Bitmap클래스를 사용하여 형식을 모르고 이미지 다운로드

위의 예에서는 다운로드 할 이미지 파일 형식을 알아야합니다. 그런 다음 URL에서 다운로드하여 저장할 수 있습니다. 그러나 이미지 파일 형식을 모르는 경우Bitmap클래스를 사용할 수 있습니다. Bitmap클래스는 C#에서 이미지 작업을위한 메서드를 제공합니다. 이 메서드는Bitmap클래스가 처리 할 수있는 모든 형식의 파일을 다운로드하고 저장합니다. Bitmap.Save(path, format)함수는 비트 맵의 ​​내용을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에 웹 요청을했습니다. 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()함수를 정의했습니다. webClient.DownloadData(url)함수에서 반환 된 데이터를 저장하기 위해data바이트 배열을 사용했습니다. 그런 다음data를 사용하여MemoryStream클래스의mem인스턴스를 초기화했습니다. 그런 다음Image.FromStream(mem)함수를 사용하여mem에서 이미지yourImage를 읽습니다. 마지막으로yourImage.Save("Image2.png", ImageFormat.Png)함수를 사용하여ImageFormat.Png형식을 사용하여yourImage이미지를Image2.png경로에 저장했습니다.

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

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

관련 문장 - Csharp Image