[英]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.