簡體   English   中英

不支持ImageSharp指定的方法

[英]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存儲庫 ,則可以看到拋出異常的行:

ReferenceReadStream:第168行

    public override void Write(byte[] buffer, int offset, int count)
    {
        throw new NotSupportedException();
    }

因此,除了參與這些項目之外,您現在無能為力。 至少您可以在給定的存儲庫中打開問題。 通過嘗試其他Save()重載甚至獲得另一個圖像處理工具包,您也可能很幸運。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM