Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $YECBGYFECGEAFWHA as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2

Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $BBWFDDBHHYHDXXAB as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2
dotnet 在 Windows 系统上使用 stakx 的 WIC 库_创想鸟

dotnet 在 Windows 系统上使用 stakx 的 WIC 库

windows 系统上,windows imaging component(wic)是一个关键的多媒体处理组件,尤其是在处理图片编码、解码和处理方面。wpf(windows presentation foundation)已经很好地封装了 wic 层,使得在 wpf 中使用这些功能变得非常方便。然而,如果你有特殊需求,需要在 wpf 之外通过纯控制台的方式使用 wic 层的逻辑,可以考虑使用 stakx 的 wic 库。但经过探索,发现 wpf 框架仍然是使用 wic 层的最佳封装,即使在控制台应用程序中也可以使用 wpf。

因为我正在探索 WIC 层的各种方法,本文旨在记录一个可用的库,但最终发现 WPF 是最好的封装。无论是否使用 WPF 窗口,只要在 Windows 下,都可以使用 WPF 提供的 WIC 层封装,因为如果你只使用 WIC 层,相当于只是使用 WPF 库封装的方法。

关于 WPF 中封装的底层原理,可以参考 dotnet 读 WPF 源代码笔记,其中 WIC 多媒体图片处理功能是通过 WindowsCodecs.dll 实现的。

在 .NET Framework 中,引用 WPF 不会增加任何额外的输出文件。在 .NET Core 中,除非是独立发布,否则也不会有额外的输出文件。如果是框架依赖发布,额外输出的文件也非常少。因此,使用 WPF 框架几乎没有缺点。与 WPF 框架相比,使用 stakx 的 WIC 库并没有明显的优势。

接下来是关于如何使用 stakx 的 WIC 库的说明。在开始之前,需要通过 NuGet 安装 stakx.WIC 库,这是一个在 GitHub 上完全开源的库,请访问 https://www.php.cn/link/13287c195ee2950c927824118a3a42b3。

或者在你的 csproj 文件中添加以下代码:

  

这个库的入口是 WICImagingFactory 接口,这是一个 COM 定义的接口,因此可以使用 new 关键字创建,如下面的代码所示:

WICImagingFactory factory = new WICImagingFactory();

接口可以使用 new 关键字创建,只要标记了这是 COM 接口即可。

这个库的封装都在 WICImagingFactory 的方法中,各个方法的使用方法请参阅官方 WIC 文档。

以下是一些使用示例:

例如,获取本机安装的图片解码器,可以用来判断本机是否有 HEIF 解码器:

static void Main(string[] args){    WICImagingFactory factory = new WICImagingFactory();    foreach (var wicBitmapEncoderInfo in EnumEncoders(factory))    {        Console.WriteLine(wicBitmapEncoderInfo.GetFriendlyName());    }    // BMP Encoder    // GIF Encoder    // JPEG Encoder    // PNG Encoder    // TIFF Encoder    // WMPhoto Encoder    // DDS Encoder    // Microsoft HEIF Encoder}static IEnumerable EnumEncoders(IWICImagingFactory wic){    return wic.CreateComponentEnumerator(WICComponentType.WICEncoder, WICComponentEnumerateOptions.WICComponentEnumerateDefault)        .AsEnumerable()        .OfType();}

dotnet 在 Windows 系统上使用 stakx 的 WIC 库

以上就是dotnet 在 Windows 系统上使用 stakx 的 WIC 库的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/190612.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
网站禁止F12调试怎么办?如何绕过限制进行页面调试?
上一篇 2026年9月7日 02:51:49
mysql如何设置自增长id
下一篇 2026年9月7日 02:55:51

相关推荐

发表回复

登录后才能评论
关注微信