从外部网站获取大量.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秒。

你们看到基于我的代码的改进了吗?什么好主意吗?

尼尔斯

从外部网站获取大量.png文件,将其转换为.bmp文件并存储在自己的文件夹中,最快的方法是什么?

一个明显而简单的改变是通过改变使它能够并行执行:

foreach (string radar in col.Radars)

Parallel.foreach(col.Radars, radar =>
...
);