首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏林德熙的博客

    WPF 对接 Vortice 调用 WIC 加载图片

    本文将告诉大家如何通过 Vortice 库从底层的方式使用 WIC 层加载本地图片文件,解码为 IWICBitmap 图片,然后将 IWICBitmap 图片交给 WPF 进行渲染 本文的前置博客:WPF 对接 Vortice 调用 D2D 使用 IWICBitmap 离屏渲染 先集中精力到如何通过 WIC 层加载本地文件为图片上,本文的所有代码都可以在本文末尾获取 下面介绍比较通用的做法进行加载图片文件 按照惯例,先创建出 IWICImagingFactory 对象,如以下代码 using Vortice.WIC; using var wicImagingFactory = new IWICImagingFactory 异常是对应有 WIC 的错误码信息的,如比较常见的图片损坏的如下异常 SharpGen.Runtime.SharpGenException:“HRESULT: [0x88982F50], Module:

    59410编辑于 2023-05-16
  • 来自专栏林德熙的博客

    dotnet 在 Windows 系统上使用 stakx 的 WIC

    默认在 WPF 中就可以使用封装好的 WIC 层,也就是说最好的 WIC 库就是 WPF 框架了。 但是如果在 WPF 之外呢,我有一点特别的需求,我想要绕过 WPF 框架,通过纯控制台的方式使用到 WIC 层的逻辑,此时可以使用 stakx 的 WIC 库。 只要在 Windows 下,无论用不用 WPF 窗口,都能使用 WPF 提供的 WIC 层封装,因为咱如果只用到 WIC 层,那么相当于只是使用 WPF 库封装的方法 在 WPF 中封装的底层原理请看 和 WPF 框架对比,使用 stakx 的 WIC 库没啥优势 回到本文的 stakx 的 WIC 库的使用方法上,在开始之前需要通过 NuGet 安装 stakx.WIC 库,这是在 GitHub 上完全开源的 ,请看 https://github.com/stakx/WIC 或者在 csproj 上添加如下代码 <ItemGroup> <PackageReference Include="stakx.<em>WIC</em>

    1.2K30发布于 2021-03-29
  • 来自专栏hank

    如何查看和复制PetaLinux(Yocto)的wic文件中的内容

    如何查看和复制PetaLinux(Yocto)的wic文件中的内容 总结 使用“wic ls”命令,ls”查看wic文件里的分区和文件。 使用“wic cp”命令,在Linux Host和wic文件的分区之间,复制文件。 使用“wic rm”删除wic文件里的文件。 petalinux产生wic文件 使用命令“petalinux-package --wic”, 可以让PetaLinux产生wic文件。wic文件一般比较大。如果想查看、复制其中的文件,也是可以的。 ls查看wic文件里的分区和文件 最常见的使用,是使用“wic ls”查看wic文件里的分区和文件。 “wic help”查看wic的的帮助信息。

    3.3K30编辑于 2022-09-27
  • 来自专栏林德熙的博客

    dotnet 读 WPF 源代码笔记 启动欢迎界面 SplashScreen 的原理

    也就是启动过程如果再没有什么比 DispatcherPriority.Loaded 更高的优先级,那就是启动完成了 在 WPF 里面的 SplashScreen 的核心逻辑里面包含以下三步 第一步是通过 WIC (UnsafeNativeMethods.WIC.WINCODEC_SDK_VERSION, out pImagingFactory); // the unmanaged pointer UnsafeNativeMethods.WIC.CreateStream(pImagingFactory, out pIStream 就是调用 WIC 层的逻辑,在 WPF 中的 WIC 层逻辑和其他 Win32 应用一样,通过 WindowsCodecs.dll 提供,只是在 UnsafeNativeMethods.WIC.CreateImagingFactory (UnsafeNativeMethods.WIC.WINCODEC_SDK_VERSION, out pImagingFactory); 可以看到 WPF 使用的版本是 0x236 比较古老 通过对比

    1.4K20发布于 2020-12-22
  • 来自专栏hank

    解决问题Linux启动错误“ERROR: There's no '/dev' on rootfs.”不能mount sda2的根文件系统。

    使用KR260 PetaLinux 2022.1 BSP创建工程后,使用产生的wic文件烧录tf卡,Linux启动报告错误“ERROR: There's no '/dev' on rootfs.”。 hankf@XSZGS4:images$ wic ls petalinux-sdimage-rootfs.wic Num Start End Size 2147487743 2147483648 fat32 2 2147487744 6442455039 4294967296 ext4 hankf@XSZGS4:images$ wic ls petalinux-sdimage-rootfs.wic:1 Volume in drive : is boot Volume Serial Number is 9664-BAF7

    2.3K10编辑于 2022-10-04
  • 来自专栏林德熙的博客

    WPF 对接 Vortice 在 Direct2D 绘制从 WIC 加载的图片

    本文告诉大家如何通过 Vortice 在 Direct2D 里面绘制图片,图片的来源是 WIC 加载出的图片 在上一篇博客告诉了大家如何对接 Vortice 调用 WIC 加载图片,上一篇博客是将 WIC 本文将告诉大家如何在 Direct2D 里将 WIC 加载的图片绘制 核心的两个点就是用拿到的 IWICBitmapFrameDecode 进行 IWICFormatConverter 转换图片格式,转换为 Format32bppPBGRA 对 Direct2D 友好的格式,再通过 CreateBitmapFromWicBitmap 方法转换为 ID2D1Bitmap 加入绘制 通过上一篇博客可以了解到如下代码可以加载本地图片文件到 WIC 具体在哪一层做实际的转换,这是封装起来的黑盒 // 这里不是真实的立刻进行转换哦,实际转换执行是隐藏起来的 converter.Initialize(imageFrame, Vortice.WIC.PixelFormat.Format32bppPBGRA wicImagingFactory.CreateFormatConverter(); // 这里不是真实的立刻进行转换哦,实际转换执行是隐藏起来的 converter.Initialize(imageFrame, Vortice.WIC.PixelFormat.Format32bppPBGRA

    68920编辑于 2023-05-16
  • 来自专栏林德熙的博客

    dotnet win32 使用 WIC 获取系统编解码器

    在 Windows 系统上,有一个很重要的概念是 Windows Imaging Component 也就是 WIC 层,这是专门用来处理多媒体相关的系统组件,特别是用来处理图片相关,包括编码和解码和处理图片 开发者可以扩展 WIC 层的编解码器,从而让系统可以支持更多格式的多媒体文件。 本文将告诉大家如何获取当前系统上在 WIC 层安装的图片编解码器,从而了解当前系统支持哪些格式的图片 为了方便在 dotnet 调用到 WIC 层,本文将安装 stakx 库。 这个库是对 WIC 的底层基础封装,代码也不多,大家如果不想安装库,也可以自行去抄代码。 详细请看 dotnet 在 Windows 系统上使用 stakx 的 WIC 库 新建 dotnet 6 控制台项目,编辑 csproj 项目文件,替换为如下代码即可完成 stakx 库的安装 <Project

    74220编辑于 2023-05-13
  • 来自专栏AhDung

    【工具】清理Windows Installer冗余文件(支持64位NT6.x系统)

    并有进度反馈 可选择清理指定文件 可排序 可选择删除到回收站,或直接删除 说明: 类似工具有几个,其中我熟知的是smallfrogs大牛的【Windows Installer 冗余文件清理工具】(下文称WIC 我想是因为WIC编写年代久远,可能作者本就没有考虑在新平台使用。 所以可能就因为这个原因,导致WIC在64位系统上访问到错误的键,又因为错误键下并不记录已安装的msp文件信息,最终导致WIC将大量并不是冗余状态的msp文件判定为冗余。 WIC删除体验不好。 就是以上两个原因让我有重造轮子的想法,所以可以说我对我这新工具的定位就是WIC的替代品,自然不存在WIC的问题,当然不排除我这工具也有其它问题,有句话叫什么来着,没有BUG的程序是什么也不做的程序。 另外我必须要说,即便WIC作为一个实现有些问题,但它的工作原理是了不起的,事实上我的工具也是基于大牛的冗余判定原理实现的,可惜现在他的官网不能访问,目前可以访问这里获知一些信息。

    2.2K20发布于 2018-09-13
  • 来自专栏黄腾霄的博客

    2018-9-25-如何让WPF显示非默认格式的图片

    WPF的图片的编解码功能来自于wic框架。 WIC实际上是一种windows图片处理的API协定,所有实现了WIC接口的编解码器,能够同windows内置编解码器一样得到使用,而无需在对这些支持WIC的程序进行更新。 目前支持WIC的有WPF,Windows Live,Windows Photo等。 所以我们的问题就转换为如何为指定图片格式注册WIC图片编解码器。 这部分涉及到非托管代码,不过不用担心大部分情况下图片格式提供者都会做好WIC的编解码器封装 我们以google的webp图片格式为例。

    1.1K50发布于 2020-06-10
  • 来自专栏林德熙的博客

    dotnet 读 WPF 源代码笔记 WIC 多媒体图片处理通过 WindowsCodecs.dll 实现功能

    本文是我在读 WPF 源代码做的笔记 在 WPF 中,作为一个现代化的 UI 框架,自然有很多多媒体相关的事情需要处理,在 WPF 中有特别的一层是 WIC 层,这一层将包揽了大部分的多媒体图片的处理。 如咱熟悉的 BitmapEncoder 类,里面就有大量调用到 WIC 的逻辑 那么在 WPF 中说的 WIC 层是什么? 通过 官方文档 可以了解到 WIC 就是 Windows Imaging Component 的缩写,专门用来处理图片相关的逻辑 在用户端的代码逻辑放在 WindowsCodecs.dll 文件里面,这个文件是跟随系统的 这也就是在即使使用 dotnet core 版本的 WPF 也许会遇到有多媒体图片渲染失败的一个原因了,当然了我这么久也没有听到有小伙伴和我反馈遇到此问题 在 WPF 里面使用到 WIC 的底层调用的逻辑 https://blog.lindexi.com/post/dotnet-%E8%AF%BB-WPF-%E6%BA%90%E4%BB%A3%E7%A0%81%E7%AC%94%E8%AE%B0-WIC

    66220发布于 2020-12-22
  • 来自专栏林德熙的博客

    WPF 通过 GifBitmapDecoder 调用 WIC 解析 Gif 和进行动画播放的简单方法

    本文告诉大家如何在 WPF 里,通过 GifBitmapDecoder 调用 WIC 层来解析 GIF 图片,然后采用动画的方式进行播放 在上一篇博客告诉大家,可以通过 GifBitmapDecoder 调用 WIC 层解析 GIF 图片 使用 WIC 层解析 GIF 图片可以调用系统默认解码器,对 GIF 的支持较好,也能支持很多诡异的格式,而且对这些诡异的图片的行为保持和其他应用相同 本文在上一篇博客的基础上

    1K20编辑于 2022-08-12
  • 来自专栏24K纯开源

    CoCreateInstance调用返回代码0x80040154的一种解决方法

    (3)LOGO资源使用Windows自带的解码库来进行解码,也就是Windows Image Component(WIC).       这么一思考,还是挺靠谱的。 我们程序中使用了WIC组件来解码图片,那么难道是WIC组件类没有注册吗?       再一想,开发时采用的一直是Windows10,可以正常运行。到了Windows7上为啥就不行了呢? 难道是WIC在Windows7上不支持?这个怀疑显然是不成立的,从MSDN上来看从XP SP2就开始支持了啊: ?       那么难道是参数给的不对? 参考链接 http://stackoverflow.com/questions/16697112/why-using-wic-in-my-32-bit-application-fails-in-windows

    3.1K100发布于 2018-01-18
  • 来自专栏c#开发者

    windows logon API

            const int LOGON32_LOGON_INTERACTIVE = 2;         static public WindowsImpersonationContext wic (ImpersonateValidUser("michaell", "cmp-0641", "wilma"))         //    {         //        using (wic                     {                         wi = new WindowsIdentity(tokenDuplicate);                         wic = wi.Impersonate();                         if (wic !

    1.2K40发布于 2018-04-12
  • 来自专栏林德熙的博客

    WPF 已知问题 BitmapDecoder.Create 不支持传入 Asynchronous 的文件流

    本质原因是 WIC 层不支持,和 WPF 没有关系 GitHub 链接: BitmapDecoder.Create does not handle FileStream with FileOptions.Asynchronous BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.None); 运行以上代码将会抛出 ArgumentException 而创建解码器失败 本质原因是 WIC out IntPtr /* IWICBitmapDecoder */ ppIDecode); } 从以上代码可以看到是在 WindowsCodecs.dll 也就是 WIC IWICImagingFactory::CreateDecoderFromFileHandle 方法不支持的知识 我写了一个简单的 demo 程序,用来测试是否 FileOptions.Asynchronous 参数的文件句柄将会在 WIC 因此在 WPF 中,调用 BitmapDecoder.Create 方法,传入的带 FileOptions.Asynchronous 的 FileStream 抛出错误,不是 WPF 层的锅,而是 WIC

    67630发布于 2021-05-17
  • 来自专栏网络技术联盟站

    如何安装 CISCO GNS3 IOS 映像?

    第 7 步:选择 WIC 卡 在这里,我们将选择WICWIC 是WAN 接口卡,然后我们将点击下一步完成我们的安装。

    3.4K20编辑于 2023-03-13
  • 来自专栏hank

    快速运行AMD Xilinx KR260的Linux

    下载后,得到文件“petalinux-sdimage_xilinx-k26-starterkit.wic.xz”。 使用BSP文件,创建petalinux工程后,在目录“pre-built/linux/images”中有所有启动相关的文件,包括wic Image文件petalinux-sdimage.wic的压缩版本 “petalinux-sdimage.wic.xz”。 hankf@XSZGS4:images$ wic ls petalinux-sdimage.wic Num Start End Size Fstype 使用工具,比如7zip,解压上述的wic文件的压缩版本,再使用Win32DiskImager或者类似工具,将wic文件写入TF卡,插入KR260,即可启动。

    3K20编辑于 2022-09-29
  • 来自专栏林德熙的博客

    WPF 已知问题 在 WIC 层处理异常图片时 可能由于出现未处理异常导致进程退出

    本文记录一个已知问题,此问题预计和 WPF 只有一毛钱关系,本质问题是在 WIC 层的 WindowsCodecs.dll 或 CLR 层上。 想想,要是你调用了某个系统组件,这个组件炸了,那你的应用要不要跟着炸,如果不跟着炸,会不会造成更大的危害,比如损坏数据等等 为什么 WIC 层系统组件存在问题会影响 WPF 应用程序? 这是因为 WPF 的多媒体编码解码是通过 WIC 层实现的,详细请看 dotnet 读 WPF 源代码笔记 WIC 多媒体图片处理通过 WindowsCodecs.dll 实现功能 为什么说此问题和 WPF 这是因为直接走 WIC 解码本身就有问题,不通过 WPF 自己手动调用 WIC 的方法也能复现,请看 dotnet win32 使用 WIC 获取系统编解码器 或者是通过 DirectX 方式走,请看 在 Direct2D 绘制从 WIC 加载的图片 更进一步,更新系统之后就不复现问题,也就是说很快某软就发现了这个问题,默默修了。

    73510编辑于 2023-12-06
  • 来自专栏镁客网

    【津彩鲜知】第六届世界智能大会WIC智能科技创新应用优秀案例启动征集

    来源:世界智能大会组委会秘书处

    18420编辑于 2022-03-04
  • 来自专栏林德熙的博客

    dotnet C# 使用 Vortice 支持 Direct2D1 离屏渲染

    开始编写代码之前,先引用命名空间 using Vortice.Mathematics; using Vortice.WIC; using D2D = Vortice.Direct2D1; using PixelFormat 创建 IWICBitmap 类型的对象需要通过 WIC 工厂进行创建。 (); 如此即可将内容绘制到 IWICBitmap 上 接下来是将 IWICBitmap 的内容保存到本地的图片,保存 IWICBitmap 需要先对 IWICBitmap 进行编码,编码时需要使用 WIC "; using (var fileStream = File.OpenWrite(file)) { // 忽略代码 } 通过 WIC

    85930编辑于 2023-04-07
  • 来自专栏网络技术联盟站

    网络工程师必知的网络精华知识!

    [1620621695637-image.png] 路由器问题补充: 1、Cisco3600系列路由器目前是否支持广域网接口卡WIC-2T和WIC-2A/S? Cisco3600系列路由器在12.007XK及以上版本支持WIC-2T和WIC-2A/S这两种广域网接口卡。 但是需要注意的是只有快速以太网混合网络模块能够支持这两种广域网接口卡。 2、Cisco3600系列路由器的NM(4A/S,NM(8A/S网络模块和WIC(2A/S广域网接口卡支持的最大异/同步速率各是多少? 这些网络模块和广域网接口卡既能够支持异步,也能够支持同步。 3、WIC-2T与WIC-1T的电缆各是哪种? WIC-1T:DB60转V35或RS232、 449等电缆。 如:CAB-V35-MT。 WIC-2T:SMART型转V35或RS232、 449等电缆。 如: CAB-SS-V35-MT。

    1.3K23发布于 2021-05-12
领券