【问题标题】:C# save image very slowly when overwritingC#覆盖时保存图像非常慢
【发布时间】:2018-09-23 16:08:34
【问题描述】:

起初,我的 VS2017 创建图像快速流畅。但是当它第二次运行并且具有相同文件名的图像已经存在时,程序每3次暂停bitmap.Save(...)步骤。创建所有 20 个 *.png 文件需要 5.4 秒,但如果目标目录中已经存在所有文件,则需要 41.4 秒。我相信它正在处理文件覆盖。

代码如下:

for (int i = 0; i < 20; i++)
{
    Bitmap bitmap = new Bitmap(5000, 5000);
    Graphics graphics = Graphics.FromImage(bitmap);

    //Draw something here...

    bitmap.Save(i.ToString() + ".png", System.Drawing.Imaging.ImageFormat.Png);                
    Console.WriteLine("Image Saved");
    bitmap.Dispose();
    graphics.Dispose();
}

奇怪的是,如果我复制代码并将其粘贴到在另一台计算机上创建的新项目上,则不会发生此问题。但是,如果那台计算机运行从我的项目发布的 *.exe 文件,它也会有同样的问题。

它是否与我的 Visual Studio 环境设置的某个地方有关?谢谢!

【问题讨论】:

  • 我只是运行您的代码并没有发现任何性能问题。当你说它暂停时,暂停了多长时间
  • 定义“非常慢”?您之前尝试过删除文件吗?
  • 尝试使用绝对路径,而不是一个相对于 exe 的相对路径,看看是否有区别。
  • @SimonPrice 每 3 个循环暂停 5 秒,正如您所说,它认为不应该有任何性能问题,但它确实发生了。
  • @Sinatr 创建所有 20 个 *.png 文件只需要 5.4 秒,但如果所有文件都已经存在,则需要 41.4 秒。如果我删除所有存在的文件,它会像预期的那样顺利运行,但我仍然很好奇为什么它只发生在我的电脑上。

标签: c# image save overwrite


【解决方案1】:

我发现问题是由 Trend 杀毒软件引起的。我关闭它后,程序恢复正常。可能是因为杀毒软件正在监视或扫描覆盖过程,使其变慢。 谢谢大家的回复。

【讨论】:

    猜你喜欢
    • 2015-04-18
    • 2021-08-09
    • 1970-01-01
    • 2018-07-16
    • 2014-05-19
    • 1970-01-01
    • 2012-05-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多