0
我正在创建一个在定时器上运行的应用程序,并且我想要截取每个刻度并将其保存到磁盘。这应该在后台运行,所以我希望它占用尽可能少的CPU时间。然而,当我运行性能分析时,我发现大约40%的时间花费在Bitmap.Save
,我的CPU使用率平均高达10%-15%左右(这是一台旧电脑)减少Bitmap.Save的CPU使用率。
所以我的问题是,有什么办法来节制图像保存过程,以便Bitmap.Save
不会使用太多的处理器时间?
我试过设置Thread.CurrentThread.Priority = ThreadPriority.Lowest;
但是这并没有太大的改变,也没有使用线程池。
下面是我在做什么:
public static void SaveScreenshot(string path)
{
Bitmap bmp = TakeScreenshot();
Directory.CreateDirectory(Path.GetDirectoryName(path));
bmp.Save(path);
bmp.Dispose();
}
需要的输出文件格式是什么? PNG,JPEG,BMP ..,? – apdevelop
这是PNG。也许它花费了很多时间在压缩上? –
刚刚测试过,保存为BMP的速度大约快了5-6倍,但也导致了30倍大的文件。 JPEG大约快两倍,大小相同,但它具有有损压缩。有没有办法在压缩PNG图像时限制CPU使用率,或者这只是性能和图像尺寸/质量之间的必然折衷? –