在 Windows 系统上,有一个很重要的概念是 Windows Imaging Component 也就是 WIC 层,这是专门用来处理多媒体相关的系统组件,特别是用来处理图片相关,包括编码和解码和处理图片。开发者可以扩展 WIC 层的编解码器,从而让系统可以支持更多格式的多媒体文件。本文将告诉大家如何获取当前系统上在 WIC 层安装的图片编解码器,从而了解当前系统支持哪些格式的图片
为了方便在 dotnet 调用到 WIC 层,本文将安装 stakx 库。这个库是对 WIC 的底层基础封装,代码也不多,大家如果不想安装库,也可以自行去抄代码。详细请看 dotnet 在 Windows 系统上使用 stakx 的 WIC 库
新建 dotnet 6 控制台项目,编辑 csproj 项目文件,替换为如下代码即可完成 stakx 库的安装
按照 dotnet 在 Windows 系统上使用 stakx 的 WIC 库 博客提供的方法,先创建 WICImagingFactory 对象,代码如下
接着通过 CreateComponentEnumerator 获取当前系统的编码器或解码器,如以下代码传入 WICComponentType.WICDecoder
即可获取解码器
此 componentEnumerator
是一个枚举,可以通过 AsEnumerable 方法转换为 .NET 的枚举,代码如下
这就是使用 C# 代码枚举本机所安装的图片解码器的方法
运行代码,输出大概如下
同理的获取解码器可以传入 WICComponentType.WICEncoder 代码,修改之后的代码如下
运行代码可以看到输出大概如下
如果同时需要获取编码器和解码器,可以传入 WICComponentType.WICEncoder | WICComponentType.WICDecoder
如以下代码
本文的代码放在github 和 gitee 欢迎访问
可以通过如下方式获取本文的源代码,先创建一个空文件夹,接着使用命令行 cd 命令进入此空文件夹,在命令行里面输入以下代码,即可获取到本文的代码
以上使用的是 gitee 的源,如果 gitee 不能访问,请替换为 github 的源。请在命令行继续输入以下代码
获取代码之后,进入 JegejarleRajurnayhajaidee 文件夹
原文链接: http://blog.lindexi.com/post/dotnet-win32-%E4%BD%BF%E7%94%A8-WIC-%E8%8E%B7%E5%8F%96%E7%B3%BB%E7%BB%9F%E7%BC%96%E8%A7%A3%E7%A0%81%E5%99%A8
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。
欢迎转载、使用、重新发布,但务必保留文章署名 林德熙 (包含链接: https://blog.lindexi.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我 联系。