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

ASP.NET Core 3.1 MVC免费可靠的图片压缩及缩略图生成方案咨询

在ASP.NET Core 3.1 MVC中实现图片压缩与缩略图的免费可靠方案

你遇到的System.Drawing.Common is not supported on this platform异常,是因为该组件在.NET Core 3.1及以上版本的非Windows平台(如Linux、macOS)已不再被官方支持。以下是两个跨平台、免费开源的替代方案:

1. ImageSharp

这是.NET生态下专为跨平台设计的高性能图像处理库,维护活跃,支持jpg、png等主流格式。

安装方式

通过NuGet安装:

Install-Package SixLabors.ImageSharp
Install-Package SixLabors.ImageSharp.Drawing

压缩并生成缩略图示例代码

using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Formats.Jpeg;
using SixLabors.ImageSharp.Formats.Png;
using SixLabors.ImageSharp.Processing;

public void ProcessImage(string inputPath, string outputThumbPath, int targetWidth, int quality = 70)
{
    using (var image = Image.Load(inputPath))
    {
        // 计算等比例缩放后的高度
        var targetHeight = (int)((double)image.Height / image.Width * targetWidth);
        
        // 生成缩略图
        image.Mutate(x => x.Resize(targetWidth, targetHeight));
        
        // 根据原格式选择编码器并设置参数
        if (inputPath.EndsWith(".jpg", StringComparison.OrdinalIgnoreCase))
        {
            var jpegEncoder = new JpegEncoder { Quality = quality };
            image.Save(outputThumbPath, jpegEncoder);
        }
        else if (inputPath.EndsWith(".png", StringComparison.OrdinalIgnoreCase))
        {
            var pngEncoder = new PngEncoder { CompressionLevel = PngCompressionLevel.Level6 };
            image.Save(outputThumbPath, pngEncoder);
        }
    }
}

2. SkiaSharp

基于Google Skia图形引擎的.NET绑定库,跨平台支持完善,性能优异。

安装方式

通过NuGet安装:

Install-Package SkiaSharp
Install-Package SkiaSharp.NativeAssets.Linux // Linux环境需额外安装

压缩并生成缩略图示例代码

using SkiaSharp;

public void ProcessImageWithSkia(string inputPath, string outputThumbPath, int targetWidth, int quality = 70)
{
    using (var inputStream = File.OpenRead(inputPath))
    using (var originalBitmap = SKBitmap.Decode(inputStream))
    {
        // 计算等比例缩放后的高度
        var targetHeight = (int)((double)originalBitmap.Height / originalBitmap.Width * targetWidth);
        
        // 创建缩略图Bitmap
        using (var resizedBitmap = originalBitmap.Resize(new SKImageInfo(targetWidth, targetHeight), SKFilterQuality.High))
        using (var image = SKImage.FromBitmap(resizedBitmap))
        using (var outputStream = File.OpenWrite(outputThumbPath))
        {
            // 根据原格式选择编码格式
            var format = inputPath.EndsWith(".jpg", StringComparison.OrdinalIgnoreCase) 
                ? SKEncodedImageFormat.Jpeg 
                : SKEncodedImageFormat.Png;
            
            // 编码并保存
            image.Encode(format, quality).SaveTo(outputStream);
        }
    }
}

这两个库都能完美替代System.Drawing.Common的图片处理能力,在Windows、Linux、macOS平台均能稳定运行,满足压缩图片和生成缩略图的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 10:22:08