从外部网站获取大量.png文件,将其转换为.bmp文件并存储在自己的文件夹中,最快的方法是什么?
本文关键字:文件 文件夹 自己的 方法 存储 是什么 bmp 获取 网站 png 从外部 | 更新日期: 2023-09-27 18:03:23
我有一个调度器(每10分钟)设置在我的Azure数据上从外部服务器获取大约35个png,我希望这些png (8bit)保存在我的服务器上,并且还将它们保存为24位。bmp
所以我现在所做的,是循环通过URL的列表,下载。png到我的服务器,然后将这些png转换为24位的。bmp。
这是我的代码:
foreach (string radar in col.Radars)
{
if (Counter > 3)
{
Uri radarUri = new Uri(radar.RadarImageSource);
string FileNamePNG = SavePathPNG + (HttpUtility.ParseQueryString(radarUri.Query).Get("time") + "x.png").Remove(0, 8);
string FileNameBMP = SavePathBMP + (HttpUtility.ParseQueryString(radarUri.Query).Get("time") + "x.bmp").Remove(0, 8);
UpdatedFilePaths.Add(FileNamePNG);
UpdatedFilePaths.Add(FileNameBMP);
using (WebClient webClient = new WebClient())
{
webClient.DownloadFile(radarUri, FileNamePNG);
}
using (Bitmap org = new Bitmap(FileNamePNG))
{
using (Bitmap bm = new Bitmap(org.Width, org.Height, PixelFormat.Format24bppRgb))
{
bm.SetResolution(org.HorizontalResolution, org.VerticalResolution);
using (Graphics g = Graphics.FromImage(bm))
{
g.DrawImage(org, 0, 0);
g.Dispose();
bm.Save(FileNameBMP, ImageFormat.Bmp);
}
}
}
}
现在,这个任务需要很长时间才能完成,Scheduler的超时时间只有30秒。
你们看到基于我的代码的改进了吗?什么好主意吗?
尼尔斯一个明显而简单的改变是通过改变使它能够并行执行:
foreach (string radar in col.Radars)
Parallel.foreach(col.Radars, radar =>
...
);