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

.NET Framework转.NET Core:Gif打标控制台程序迁移报错求助

问题原因

你原先使用的GifBitmapEncoder属于WPF专属的System.Windows.Media.Imaging命名空间,依赖WindowsBase程序集,仅支持Windows平台。而你要部署的.NET Core控制台程序是跨平台架构,尤其是Docker(大概率使用Linux容器)环境下,完全无法调用Windows专属的桌面框架API,因此出现这些错误。

解决方案:改用跨平台图片处理库

推荐两个成熟的跨平台图片处理库,任选其一即可:

方案1:使用ImageSharp

  1. 安装NuGet包
    在项目中安装以下两个包:
Install-Package SixLabors.ImageSharp
Install-Package SixLabors.ImageSharp.Drawing

或使用.NET CLI命令:

dotnet add package SixLabors.ImageSharp
dotnet add package SixLabors.ImageSharp.Drawing
  1. 示例代码(给Gif添加文字标签)
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Processing;
using SixLabors.Fonts;
using SixLabors.ImageSharp.Drawing.Processing;

// 加载目标Gif
using var image = Image.Load<Rgba32>("input.gif");

// 配置字体与标签参数
var font = SystemFonts.CreateFont("Arial", 24);
var textOptions = new TextOptions(font)
{
    Origin = new PointF(10, 10), // 标签左上角坐标
    HorizontalAlignment = HorizontalAlignment.Left,
    VerticalAlignment = VerticalAlignment.Top
};

// 遍历Gif每一帧添加标签
foreach (var frame in image.Frames)
{
    frame.Mutate(ctx => ctx.DrawText(textOptions, "自定义标签文本", Color.Red));
}

// 保存处理后的Gif
image.Save("output.gif");

方案2:使用Magick.NET

  1. 安装NuGet包
    跨平台场景推荐安装通用版本:
Install-Package Magick.NET-Q16-AnyCPU

或使用.NET CLI命令:

dotnet add package Magick.NET-Q16-AnyCPU
  1. 示例代码(给Gif添加文字标签)
using ImageMagick;

// 加载Gif动画集合
using var collection = new MagickImageCollection("input.gif");

// 配置标签绘制参数
var drawables = new Drawables()
    .Font("Arial")
    .FontPointSize(24)
    .FillColor(MagickColors.Red)
    .Text(10, 34, "自定义标签文本"); // 注意Y轴为文字基线位置

// 给每一帧添加标签
foreach (var image in collection)
{
    image.Draw(drawables);
}

// 保存处理后的Gif,保留动画属性
collection.Write("output.gif");
注意事项
  • Docker部署时,使用官方.NET SDK/Runtime基础镜像即可兼容上述库
  • 若需使用自定义字体,需将字体文件打包进Docker镜像,并在代码中指定字体文件路径

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 03:07:44