.NET 使用SixLabors.ImageSharp对图片进行压缩

作者:outlela  来源:本站原创   发布时间:2025-3-14 16:50:23

.NET 使用SixLabors.ImageSharp对图片进行压缩,可以进行质量压缩,与图片大小裁剪压缩,可大幅度节约流量与提高加载速度。

using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Formats.Jpeg;
using SixLabors.ImageSharp.Processing;
        private async Task<MemoryStream> UploadFileAsync(IFormFile file)
        {
            // 检查文件是否为图片
            if (IsImage(file))
            {
                if (file.Length > 1024 * 1024) // 如果文件大于1MB
                {
                    using var stream = new MemoryStream();
                    await file.CopyToAsync(stream);
                    stream.Position = 0;
                    using var image = await Image.LoadAsync(stream);
                    var jpegEncoder = new JpegEncoder { Quality = 70 }; // 设置JPEG质量
                    var outputStream = new MemoryStream();
                    image.Mutate(x => x.Resize(image.Width / 2, image.Height / 2)); // 调整尺寸
                    await image.SaveAsync(outputStream, jpegEncoder);
                    outputStream.Position = 0;
                    return outputStream;
                }
                else
                {
                    // 如果图片小于或等于1MB,则直接返回原始数据
                    var stream = new MemoryStream();
                    await file.CopyToAsync(stream);
                    stream.Position = 0;
                    return stream;
                }
            }
            else
            {
                // 如果不是图片,直接保存
                var stream = new MemoryStream();
                await file.CopyToAsync(stream);
                return stream;
            }
        }

检测是否是图片格式:

        private bool IsImage(IFormFile file)
        {
            // 简单检查文件扩展名来判断是否为图片
            var validExtensions = new[] { ".jpg", ".jpeg", ".png", ".gif" };
            var extension = Path.GetExtension(file.FileName).ToLowerInvariant();
            return validExtensions.Contains(extension);
        }

看一下效果对比:

image.png


压缩后:

image.png

提升效果明显,但丢失了一些细节,细节可以用浏览原图解决。

*本文最后修改于:2025-3-14 17:2:29
本文标签: .NET CORE SixLabors ImageSharp 图片 压缩
本文由本站原创发布, 本文链接地址:https://outlela.com/Code/212.html
转载或引用请保留地址并注明出处:outlela.com