我正在使用 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 本身是否有选项或使用更改会显着加快速度 - 检查文档,但到目前为止我看不到任何明显的东西。