ASP.NET Core中调整图像大小的合适方法是什么?

3
这是我第一次在ASP.NET Core中调整图像大小,经过一番研究,我发现下面的方法最简单、最有效,因此我就按照下面所示进行了实现。
然而,我不确定这种方法是否最有效,因为它存在两个问题,如下所述:
  1. 图像失去了很多质量
  2. 在Visual Studio中出现了一个“警告”,只要我是唯一开发者就可以了,但如果其他人开发,情况就不同了 -

所有平台都可以访问该调用站点。“Bitmap”仅在Windows上受支持。

因此,我想知道还有哪些更好的方法可以解决这两个问题中的至少第一个。
public async Task<IActionResult> Add(AddCardFormModel card, List<IFormFile> ImageFile)
{
    // ...

    foreach (var image in ImageFile)
    {
        if (image.Length > 0 || image.Length <= (2 * 1024 * 1024))
        {
            var imagesToBeResized = Image.FromStream(image.OpenReadStream());
            var resized = new Bitmap(imagesToBeResized, new Size(250, 350));

            using (var stream = new MemoryStream())
            {
                resized.Save(stream, ImageFormat.Jpeg);

                var cardData = new Card
                        {
                            Title = card.Title,
                            Description = card.Description,
                            ImageUrl = card.ImageUrl,
                            CategoryId = card.CategoryId,
                            ConditionId = card.ConditionId,
                            Price = card.Price,
                            DealerId = dealerId,
                            Image = stream.ToArray()
                        };

                this.data.Cards.Add(cardData);
                this.data.SaveChanges();
            }
        }
    }

    // ...
}
2个回答

4

2
请注意,ImageSharp库已更改为Six Labors Split License许可证。如果您将该软件包作为盈利项目的直接依赖项使用,您可能需要商业许可证。 - jahav

0

查看这个以进行图像调整。

但我建议不要将图像存储在数据库中,因为会增加数据库大小和日志大小。

你有两个选择:

选项1:将调整大小后的图像存储在目录中,并在数据库中保存名称。

选项2:将原始大小存储在目录中,并在实时调整大小。


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