簡體   English   中英

使用Imagesharp調整大小后,存儲在SQL Server數據庫中的圖像未顯示在html中

[英]Image stored in SQL Server database after resize with Imagesharp not showing in html

我有一個.NET Core 2.2 Web應用程序,其中將用戶圖像存儲在SQL Server數據庫中。 當我按原樣保存文件時,它不會出現在網頁中。

之后,我想在用戶上載文件並安裝Imagesharp軟件包並使用以下代碼調整圖像大小時調整圖像大小。 該代碼可以正常運行,但是當用戶登錄時不會顯示該圖像。

我調整圖像大小並將其存儲到數據庫中的代碼是:

圖像處理方法

public Stream ResizeImage(Image<Rgba32> sourceImage, int destHeight, int destWidth)
{
    sourceImage.Mutate<Rgba32>(ctx => ctx.Resize(destWidth,destHeight));

    Stream outputStream = new MemoryStream();
    sourceImage.Save(outputStream, new JpegEncoder());

    return outputStream;
    /*return sourceImage.
            .Crop(new Rectangle(sourceX, sourceY, sourceWidth, 
sourceHeight))
            .Resize(destinationWidth, destinationHeight);*/
}

我存儲圖像的代碼:

if (ModelState.IsValid)
{
    if (ProfileImage != null)
    {
        var stream = ProfileImage.OpenReadStream();

        Image<Rgba32> theimage = _imageProcessor.GetImageFromStream(stream);

        var outstream = _imageProcessor.ResizeImage(theimage, 100, 100);

        //Input.Image = commonData.ConvertToBytes(ProfileImage);
        Input.Image = commonData.ConvertStreamToBytes(outstream);
    }

    var user = new ApplicationUser
                   {
                        UserName = Input.Email,
                        Email = Input.Email.ToLower().Trim(),
                        FirstName = Input.FirstName,
                        LastName = Input.LastName,
                        Image = Input.Image,
                        AccountDisabled = true
                   };
}           

我嘗試按如下所示將圖像轉換為base64string后以html顯示圖像:

 userView.UserImageBytes = new string(Convert.ToBase64String(userView.TheUser.Image));

我的HTML標記以顯示圖像:

 <img src="data:image/jpg;base64,@Model.UserImageBytes" alt="No Image" />

上面的代碼工作正常,但不顯示存儲的圖像。

如何正確顯示圖像。 任何幫助表示贊賞。

在此行之后:

sourceImage.Save(outputStream, new JpegEncoder());

在最后寫入的字節之后,將outputStream設置為.Position 例如,您可能在映像之后將更多數據寫入該流。 為了讓另一個代碼位讀取圖像,你需要重新定位outputStream返回之前。 例如

outputStream.Position = 0;
return outputStream;

暫無
暫無

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

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