压缩图像的速度比 Bitmap.save C# 快

本文关键字:save Bitmap 图像 速度 压缩 | 更新日期: 2023-09-27 17:56:57

我有一个项目,使用拆分位图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
        }
    }

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

压缩图像的速度比 Bitmap.save C# 快

您应该考虑使用任务;

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

启动所有作业后,调用 Task.WaitAll(Task[]) 以等待所有作业完成。