0

0

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

爱谁谁

爱谁谁

发布时间:2025-09-11 09:17:12

|

714人浏览过

|

来源于php中文网

原创

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 关键字创建,如下面的代码所示:

SmartB2B行业电子商务
SmartB2B行业电子商务

SmartB2B 是一款基于PHP、MySQL、Smarty的B2B行业电子商务网站管理系统,系统提供了供求模型、企业模型、产品模型、人才招聘模型、资讯模型等模块,适用于想在行业里取得领先地位的企业快速假设B2B网站,可以运行于Linux与Windows等多重服务器环境,安装方便,使用灵活。 系统使用当前流行的PHP语言开发,以MySQL为数据库,采用B/S架构,MVC模式开发。融入了模型化、模板

下载
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 库

相关专题

更多
硬盘接口类型介绍
硬盘接口类型介绍

硬盘接口类型有IDE、SATA、SCSI、Fibre Channel、USB、eSATA、mSATA、PCIe等等。详细介绍:1、IDE接口是一种并行接口,主要用于连接硬盘和光驱等设备,它主要有两种类型:ATA和ATAPI,IDE接口已经逐渐被SATA接口;2、SATA接口是一种串行接口,相较于IDE接口,它具有更高的传输速度、更低的功耗和更小的体积;3、SCSI接口等等。

1050

2023.10.19

PHP接口编写教程
PHP接口编写教程

本专题整合了PHP接口编写教程,阅读专题下面的文章了解更多详细内容。

106

2025.10.17

php8.4实现接口限流的教程
php8.4实现接口限流的教程

PHP8.4本身不内置限流功能,需借助Redis(令牌桶)或Swoole(漏桶)实现;文件锁因I/O瓶颈、无跨机共享、秒级精度等缺陷不适用高并发场景。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

458

2025.12.29

java接口相关教程
java接口相关教程

本专题整合了java接口相关内容,阅读专题下面的文章了解更多详细内容。

11

2026.01.19

github中文官网入口 github中文版官网网页进入
github中文官网入口 github中文版官网网页进入

github中文官网入口https://docs.github.com/zh/get-started,GitHub 是一种基于云的平台,可在其中存储、共享并与他人一起编写代码。 通过将代码存储在GitHub 上的“存储库”中,你可以: “展示或共享”你的工作。 持续“跟踪和管理”对代码的更改。

143

2026.01.21

windows查看端口占用情况
windows查看端口占用情况

Windows端口可以认为是计算机与外界通讯交流的出入口。逻辑意义上的端口一般是指TCP/IP协议中的端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等等。怎么查看windows端口占用情况呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

647

2023.07.26

查看端口占用情况windows
查看端口占用情况windows

端口占用是指与端口关联的软件占用端口而使得其他应用程序无法使用这些端口,端口占用问题是计算机系统编程领域的一个常见问题,端口占用的根本原因可能是操作系统的一些错误,服务器也可能会出现端口占用问题。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

1125

2023.07.27

windows照片无法显示
windows照片无法显示

当我们尝试打开一张图片时,可能会出现一个错误提示,提示说"Windows照片查看器无法显示此图片,因为计算机上的可用内存不足",本专题为大家提供windows照片无法显示相关的文章,帮助大家解决该问题。

798

2023.08.01

菜鸟裹裹入口以及教程汇总
菜鸟裹裹入口以及教程汇总

本专题整合了菜鸟裹裹入口地址及教程分享,阅读专题下面的文章了解更多详细内容。

0

2026.01.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Git 教程
Git 教程

共21课时 | 2.9万人学习

Git版本控制工具
Git版本控制工具

共8课时 | 1.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号