首页 > 解决方案 > SixLabors.ImageSharp 压缩图像使图像变大为一个字节

问题描述

我有使用 SixLabors.ImageSharp 的压缩方法。当我使用该方法压缩图像时,它会在我上传之前变得更大。我上传的图片是 2,03 mb在此处输入图像描述

当它从压缩方法中出来时,它变成了 4,54 mb在此处输入图像描述

这是我的压缩方法:

public async Task<FileRepo> FileUploadToDatabase(List<IFormFile> files)
{
    foreach (var file in files)
    {
        var fileName = Path.GetFileNameWithoutExtension(file.FileName);
        var fileExtension = Path.GetExtension(file.FileName);
        using var image = Image.Load(file.OpenReadStream());
        IImageEncoder imageEncoderForJpeg = new JpegEncoder()
        {
            Quality = 80,
        };
        IImageEncoder imageEncoderForPng = new PngEncoder()
        {
            CompressionLevel = PngCompressionLevel.Level9,
        };
        _fileRepo = new FileRepo
        {
            FileName = fileName,
            FileExtension = fileExtension,
            FileType = file.ContentType,
            CreatedDate = DateTime.Now
        };
        using (var ms = new MemoryStream())
        {
            if (fileExtension == ".png")
            {
                image.Save(ms, imageEncoderForPng);
            }
            if (fileExtension == ".JPEG" || fileExtension == ".jpg")
            {
                image.Save(ms, imageEncoderForJpeg);
            }
            await file.CopyToAsync(ms);
            _fileRepo.FileData = ms.ToArray();
        }
    }
    return _fileRepo;
}

我不知道那个方法有什么问题,它应该比第一个更小吧?让我知道该问题是否重复。

标签: asp.net-coreimage-processingimage-compressionimagesharp

解决方案


推荐阅读