0

我正在使用 ImageSharp 将一些 JPEG 文件从 4000x4000(左右)图像转换为一组不同大小的缩略图(100x100、250x250、500x500 等)。下面的代码运行良好,但想知道任何性能改进 - 调整大小和保存 3 个缩略图大约需要每张图像一秒钟,这还不错,但我想知道是否有任何优化可以让它更快?

                var sizes = new[] { new Size (100), new Size (250), new Size (500) };
                using (var image = Image.Load<Rgb24>(sourceFileName))
                {
                    foreach (var size in sizes)
                    {
                        image.Mutate(x => x.Resize(size.Width, size.Height));
                        image.Save(dest);
                    }
                }

我知道这个库可能永远无法达到 GraphicsMagick 的性能(它是原生 C++ 并且高度优化,并且可以在大约 200 毫秒内完成相同的加载 + 缩略图转换),但我喜欢它是跨平台的事实。

在 ImageSharp 中完成工作的大部分时间是加载图像 - 有没有办法给它提示以更快的方式加载 JPEG,因为很多分辨率将随着缩略图的减少而被丢弃反正?加载后,实际的调整大小和保存到磁盘似乎很快。

我还尝试使用线程池来并行转换(例如)6 个图像,这确实带来了一些改进,但我只想检查 ImageSharp 本身是否有选项或使用更改会显着加快速度 - 检查文档,但到目前为止我看不到任何明显的东西。

4

0 回答 0