压缩图像比Bitmap.save C#更快

时间:2016-07-14 07:20:29

标签: c#

我有一个项目,使用分割位图10000x10000像素到100x100像素,然后我压缩到png。我的代码:

    Bitmap bitmap = new Bitmap("file name");
    for (int i = 0; i < 100; i++)
    {
        for (int j = 0; j < 100; j++)
        {
            Bitmap cropped = bitmap.Clone(new Rectangle(i*100, j*100, 100, 100), bitmap.PixelFormat);
            MemoryStream ms = new MemoryStream();
            crop.Save(ms, ImageFormat.Png);
            Bitmap NewSmallBitmap = new Bitmap(ms);
            //work something with new bitmap
        }
    }

但它运行得非常慢 - 一个循环大约1ms,所有循环大约10秒。有没有人有beter性能的解决方案?感谢

1 个答案:

答案 0 :(得分:1)

您应该使用“任务”;

TaskFactory.StartNew允许您启动任务,您可以多次调用它。每次调用都返回一个Task对象;将其保存在列表或数组中。

开始所有工作后,请致电Task.WaitAll(Task[])等待所有工作完成。