You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Asp.Net Core使用ImageSharp压缩图片存入Blob字段仍为原图问题求助

问题定位
  • 核心逻辑错误:完成图片压缩调整后,没有对内存中已经处理好的Image对象做序列化处理,反而直接遍历读取上传的原始文件流赋值给bolb.image,导致写入数据库的始终是未压缩的原文件。
  • 冗余逻辑:方法参数已经直接绑定了上传的IFormFile file对象,不需要再遍历HttpContext.Request.Form.Files集合读取文件。
  • 缺失存库逻辑:现有代码仅给bolb对象的image属性赋值,没有将bolb对象写入数据库的相关代码(如果是你省略了这部分可以忽略这条)。
修复方案

替换Index方法中using (var img = Image.Load(file.OpenReadStream()))块内的逻辑即可,修改后完整代码如下:

using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Processing;
using SixLabors.ImageSharp.Formats.Jpeg; // 引入该命名空间控制JPG压缩质量

[HttpPost]
public async Task<IActionResult> Index(IFormFile file, BlobImg bolb)
{
    if (file == null || file.Length <= 0)
    {
        // 可自行补充空文件校验提示逻辑
        return View();
    }

    using (var img = Image.Load(file.OpenReadStream()))
    {
        // 调整图片尺寸
        string newSize = ResizeImage(img, 500, 500);
        string[] aSize = newSize.Split(',');
        img.Mutate(h => h.Resize(Convert.ToInt32(aSize[1]), Convert.ToInt32(aSize[0])));
        
        // 将压缩后的图片序列化到流,再转换为字节数组
        using (var stream = new MemoryStream())
        {
            // Quality参数范围1-100,值越小压缩率越高、图片体积越小,可按需调整
            await img.SaveAsJpegAsync(stream, new JpegEncoder { Quality = 75 });
            bolb.image = stream.ToArray();
        }

        // 这里补充你的数据库写入逻辑,示例参考:
        // _context.BlobImgs.Add(bolb);
        // await _context.SaveChangesAsync();
    }

    return View();
}

public string ResizeImage(Image img, int maxWidth, int maxHeight)
{
    if (img.Width > maxWidth || img.Height > maxHeight)
    {
        double widthRatio = (double)img.Width / (double)maxWidth;
        double heightRatio = (double)img.Height / (double)maxHeight;
        double ratio = Math.Max(widthRatio, heightRatio);
        int newWidth = (int)(img.Width / ratio);
        int newHeight = (int)(img.Height / ratio);
        return newHeight.ToString() + "," + newWidth.ToString();
    }
    else
    {
        return img.Height.ToString() + "," + img.Width.ToString();
    }
}

内容的提问来源于stack exchange,提问作者Soumik Mahajan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 18:36:01