웹상의 이미지 URL을 알고 있을때.. 해당 URL로부터 이미지에 대한 데이터를 가져와 파일로 저장하는 C# 함수입니다. 가끔 꼭 필요한 함수인데.. 필요할때 쉽게 찾아 볼 수 있도록 기록해 둡니다.
private bool DownloadRemoteImageFile(string uri, string fileName)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
bool bImage = response.ContentType.StartsWith("image",
StringComparison.OrdinalIgnoreCase);
if ((response.StatusCode == HttpStatusCode.OK ||
response.StatusCode == HttpStatusCode.Moved ||
response.StatusCode == HttpStatusCode.Redirect) &&
bImage)
{
using (Stream inputStream = response.GetResponseStream())
using (Stream outputStream = File.OpenWrite(fileName))
{
byte[] buffer = new byte[4096];
int bytesRead;
do
{
bytesRead = inputStream.Read(buffer, 0, buffer.Length);
outputStream.Write(buffer, 0, bytesRead);
} while (bytesRead != 0);
}
return true;
}
else
{
return false;
}
}
사용 방법에 대한 예는 다음과 같습니다.
String url = "http://www.there.net/img.png";
String fileName = "d:/a.png";
if (!DownloadRemoteImageFile(url, fileName))
{
MessageBox.Show("Download Failed: " + url);
}
이 요긴한 함수는 제가 작성한 것은 아니고.. 검색을 통해 찾아 테스트 해보고 실제 프로젝트에 적용해 잘… 쓰고 있는 함수입니다. 출처를 기억하지 못하지만.. 개발해 제공해 준 개발자에게 감사 드립니다.