使用ImageResizer调整和裁剪图像

6

我想调整并将传入的图像裁剪为正方形。我已经将图像保存在ReadOnlyStream中,并希望输出到MemoryStream

我使用ImageResizer库来实现这一目标。

我想先缩小图像,然后居中裁剪成正方形。我使用以下代码,但它无法产生我需要的结果。它什么也不输出...

var resultStream = new MemoryStream();
ImageJob job = new ImageJob(imageStream, resultStream, new Instructions {
    Width = 100,
    Height = 100,
    Mode = FitMode.Crop
});
job.Build();

这段代码应该对大图进行下采样并按照库的默认值进行剪裁(居中剪裁)。

我在web.config中没有提供任何特定的配置,因为我理解不需要。

我做错了什么?


当你说它没有产生任何东西时,是指resultStream.Length == 0吗?在ImageResizer写入后,你需要重新将内存流seek到0。 - Lilith River
@ComputerLinguist:我假设流的读取者最初将位置设置为起始位置,以防止发生这种情况。让我立即尝试并看看会发生什么。 - Robert Koritnik
1个回答

11

在写入输出流后,ImageResizer不会将其位置重置为0,因为这会破坏像HttpResponseStream这样的非可寻址写入流。

在从其中读取之前,需要调用resultStream.Seek(0, SeekOrigin.Begin);


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接