Die Bilddateien haben jeweils weniger als 50 KB.
Mit meinem Code dauert das 2-3 Stunden.
Gibt es noch mehr? effiziente Möglichkeit in C#, sie herunterzuladen?
Code: Select all
private static readonly string baseUrl =
"http://url.com/Handlers/Image.ashx?imageid={0}&type=image";
internal static void DownloadAllMissingPictures(List ImagesToDownload,
string imageFolderPath)
{
Parallel.ForEach(Partitioner.Create(0, ImagesToDownload.Count), range =>
{
for (var i = range.Item1; i < range.Item2; i++)
{
string ImageID = ImagesToDownload[i].ImageId;
using (var webClient = new WebClient())
{
string url = String.Format(baseUrl, ImageID);
string file = String.Format(@"{0}\{1}.jpg", imageFolderPath,
ImagesToDownload[i].ImageId);
byte[] data = webClient.DownloadData(url);
using (MemoryStream mem = new MemoryStream(data))
{
using (var image = Image.FromStream(mem))
{
image.Save(file, ImageFormat.Jpeg);
}
}
}
}
});
}