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