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

如何将AVIF编解码器设为含SkiaSharp的ASP.NET项目依赖?

SkiaSharp AVIF编码返回null,ASP.NET 8内嵌编解码器部署方案

问题根源

SkiaSharp在Windows平台下的AVIF编码默认依赖系统级AV1编解码器,Windows 10未预装该组件,导致image.Encode(SKEncodedImageFormat.Avif, quality)调用失败返回null。Chrome浏览器自带独立AVIF编解码器,因此能正常渲染AVIF文件,但不影响SkiaSharp的编码逻辑。

解决步骤

1. 替换SkiaSharp依赖包,使用内置编解码器

移除原有SkiaSharp包,安装包含静态链接AVIF编解码器的NuGet包组合:

  • 安装SkiaSharp(版本≥2.88.0,需包含AVIF枚举值的更新)
  • 安装SkiaSharp.NativeAssets.Win32(提供Windows平台的静态编译原生库,包含AVIF编解码器)

2. 配置项目确保发布时携带原生资产

在ASP.NET 8项目的.csproj文件中添加以下配置,保证发布过程中原生编解码器文件被同步部署:

<PropertyGroup>
  <!-- 若启用代码裁剪,需关闭或添加保留规则;默认关闭即可 -->
  <PublishTrimmed>false</PublishTrimmed>
  <!-- 强制将原生资产复制到输出目录 -->
  <NativeAssetPublishMode>CopyAlways</NativeAssetPublishMode>
</PropertyGroup>

如果必须启用代码裁剪,需在项目根目录添加runtimeconfig.template.json并配置保留规则:

{
  "runtimeOptions": {
    "additionalProbingPaths": [
      "native"
    ]
  }
}

3. 验证编码逻辑

你的原有代码无需修改,更换依赖包后,image.Encode(SKEncodedImageFormat.Avif, quality)会正常返回SKData,可直接写入文件流完成AVIF格式导出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 02:33:14