[英]ImageSharp Specified Method is not supported
嗨,我正在使用ImageSharp 1.0.0-alpha9-00175版本。 當我使用
.Save(output, ImageFormats.Jpeg);
這是我的代碼
input.Seek(0, SeekOrigin.Begin);
using (Image<Rgba32> image = Image.Load<Rgba32>(input))
{
if (image.Width >= image.Height) //landscape
{
ratio = image.Height / defaultWidth;
}
else //portrait
{
ratio = image.Width / defaultHeight;
}
image.Resize(image.Width / ratio, image.Height / ratio)
.Crop(defaultWidth, defaultHeight)
.Save(output, ImageFormats.Jpeg);
}
如果我注釋掉.Save行,代碼將毫無例外地運行,但顯然不會保存。 我已經看過stackoverflow和Github上的問題,但無濟於事。
誰能看到我看不到的東西?
因此,在接受@Waescher的建議后,我在ImageSharp的Github上打開了一個問題,結果答案就在我的面前。 錯誤不是由ImageSharp引發的,而是由我嘗試寫入的基礎流引發的。
Microsoft.AspNetCore.Http.Internal.ReferenceReadStream.Write(byte[] buffer, int offset, int count)
我添加了一個新的MemoryStream並使用了現在的代碼。
MemoryStream outputs = new MemoryStream();
image.Resize(image.Width / ratio, image.Height / ratio)
.Crop(defaultWidth, defaultHeight)
.Save(outputs, ImageFormats.Jpeg);
感謝您的幫助。 #LearningEveryDay
由於您使用的是ImageSharp的Alpha版本,因此可能無法通過所有代碼路徑進行測試。 如果您查看調用堆棧,則會看到以下行:
Microsoft.AspNetCore.Http.Internal.ReferenceReadStream.Write(byte[] buffer, int offset, int count)
如果切換到GitHub上的aspnet的HttpAbstractions存儲庫 ,則可以看到拋出異常的行:
public override void Write(byte[] buffer, int offset, int count)
{
throw new NotSupportedException();
}
因此,除了參與這些項目之外,您現在無能為力。 至少您可以在給定的存儲庫中打開問題。 通過嘗試其他Save()
重載甚至獲得另一個圖像處理工具包,您也可能很幸運。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.