WIC 中的新增功能

Windows映像组件 (WIC) 已更新Windows的新版本。 本主题简要介绍了这些新功能。

Windows 10版本 1507 的新增功能

访问用于 WIC 解码和编码的低级别 JPEG 数据

从 Windows 10 版本 1507 开始,WIC 提供对低级别 JPEG 数据结构(包括 Huffman 和量化表)的访问。 有关详情,请参阅以下主题:

JPEG 索引

JPEG 索引编制是一种技术,可显著提高随机访问大型 JPEG 映像的小型子区域的性能,但代价是额外的内存使用量。 JPEG 索引可由 WIC 的任何调用方利用。

ID2D1ImageSourceFromWic 接口旨在利用 JPEG 索引(如果打开)。 例如,ID2D1ImageSource API 仅在一个方案(例如平移和缩放)中请求图像所需的部分,以便进行大型分辨率图像。 有关详情,请参阅以下主题:

Windows 8.1的新增功能

对 JPEG YCbCr 映像的支持

从Windows 8.1开始,WIC 支持采用本机格式解码、转换和编码 JPEG Y'CbCr 图像数据。 这允许应用在使用 Y'CbCr 编码的 JPEG 时显著减少某些映像操作的处理时间和内存消耗。 有关详情,请参阅以下主题:

支持块压缩格式 (DDS 文件)

从Windows 8.1开始,WIC 添加了一个新的编解码器,支持采用以下格式编码的 DDS 图像:DXGI_FORMAT_BC1_UNORM、DXGI_FORMAT_BC2_UNORM和DXGI_FORMAT_BC3_UNORM。 可以使用标准 WIC 接口以解码形式访问 DDS 块压缩数据,也可以使用新的 DDS 特定接口直接访问。 有关详情,请参阅以下主题:

Windows 8的新增功能

在Windows 8中,WIC 已更新了多个新功能。 Windows 7 和 Windows Server 2008 R2 上的更新版本也通过适用于 Windows 7 的平台更新提供,Windows 7 平台更新提供。

改进了 Direct2D 集成

Windows 8中的 WIC 提供了这些 API 来改进与 WIC 的 Direct2D 集成:

对 BMP 编解码器 alpha 支持的更改

Windows 8中的 WIC 支持将 BITMAPV5HEADER 图像文件作为 WICPixelFormat32bppBGRA 格式的图像加载。 此外,BMP 编码器还支持新的布尔值,编码器选项“EnableV5Header32bppBGRA”,该选项指示编码器使用 32bppBGRA 图像数据编写 BITMAPV5HEADER

有关 BMP 格式的详细信息,请参阅 BMP 格式概述

新像素格式

Windows 8中的 WIC 定义了以下新的像素格式:

  • GUID_WICPixelFormat32bppRGB
  • GUID_WICPixelFormat64bppRGB
  • GUID_WICPixelFormat96bppRGBFloat
  • GUID_WICPixelFormat64bppPRGBAHalf

注意

TIFF 内置编解码器将返回GUID_WICPixelFormat96bppRGBFloat数据。 内置编解码器不使用其他三种格式。

 

AppContainer 中组件扩展性的限制

在 AppContainer 进程中运行(包括所有Windows Microsoft Store应用)时,WIC 将仅使用Windows提供的组件,而不考虑是否在系统上安装了其他组件。 在 AppContainer 中未运行的应用不会受到影响。

应用无需进行任何代码更改才能在 AppContainger 中运行,但 WICComponentEnumerateOptions 标志和供应商 GUID 参数将不起作用。 如果无法由Windows提供的编解码器解码映像,并且调用 CreateComponentEnumerator 方法将仅返回提供的组件Windows,WIC 将无法加载该映像。

CLSID_WICPngDecoder和 PNG 解码器颜色上下文支持的更改

CLSID_WICPngDecoder1已 添加与 CLSID_WICPngDecoder相同的 GUID,并且已添加 CLSID_WICPngDecoder2

针对 Windows 8 SDK 进行编译时,CLSID_WICPngDecoder#defined CLSID_WICPngDecoder2,以使用新的 PNG 解码器行为提升新编译的应用。 应用应继续指定 CLSID_WICPngDecoder

指定 CLSID_WICPngDecoder2 将创建 WIC PNG 解码器的版本,该解码器将从 cHRM 和 gAMA 区块生成 IWICColorContext 。 这允许此颜色空间元数据与其他Windows API 一起使用,以便管理源图像。 如果存在 iCCP 区块、sRGB 区块,或者 gAMA 和 cHRM 区块指示 sRGB 颜色空间,则不会从 gAMA 和 cHRM 区块生成 IWICColorContext

应用可以指定 CLSID_WICPngDecoder1 来创建 WIC PNG 解码器的版本,该解码器不会从 gAMA 和 cHRM 区块生成 IWICColorContext 。 这与早期版本的 Windows 中的 PNG 解码器的行为匹配。

对WINCODEC_SDK_VERSION的更改

针对 Windows 8 SDK 进行编译时,WINCODEC_SDK_VERSION#defined WINCODEC_SDK_VERSION2,以使用新的 PNG 解码器行为提升新编译的应用。 否则,#defined WINCODEC_SDK_VERSION1。 应用应继续指定 WINCODEC_SDK_VERSION

调用WICCreateImagingFactory_Proxy创建映像工厂时指定WINCODEC_SDK_VERSION会导致创建CLSID_WICPngDecoder2而不是从CreateDecoder 方法及其变体CLSID_WICPngDecoder1。 此外,解码器组件信息枚举器将返回 CLSID_WICPngDecoder2 组件信息,但不返回 CLSID_WICPngDecoder1 信息。

指定 WINCODEC_SDK_VERSION1 将导致在上述情况下使用 CLSID_WICPngDecoder1 而不是 CLSID_WICPngDecoder2

对CLSID_WICImagingFactory的更改

CLSID_WICImagingFactory1 已添加与 CLSID_WICImagingFactory相同的 GUID,并且已添加 CLSID_WICImagingFactory2

针对 Windows 8 SDK 进行编译时,CLSID_WICImagingFactory#defined CLSID_WICImagingFactory2,以使用新的 PNG 解码器行为提升新编译的应用。 应用应继续指定 CLSID_WICImagingFactory

调用 CoCreateInstance 创建映像工厂时指定CLSID_WICImagingFactory2会导致创建CLSID_WICPngDecoder2而不是从CreateDecoder 方法及其变体CLSID_WICPngDecoder1。 此外,解码器组件信息枚举器将返回 CLSID_WICPngDecoder2 组件信息,但不返回 CLSID_WICPngDecoder1 信息。

指定 CLSID_WICImagingFactory1 将导致在上述情况下使用 CLSID_WICPngDecoder1 而不是 CLSID_WICPngDecoder2

Windows 7 的新增功能

在 Windows 7 中,WIC 已更新了多个新功能。 本主题简要介绍了这些新功能。

TIFF 编解码器的更新

WIC TIFF 编解码器已更新为 Windows 7,以支持旧版 WIC 不支持的多个功能。

  • 支持大型 TIFF 文件。
  • 解码平铺 TIFF 图像。
  • 解码平面 (平面) TIFF 图像。
  • 解码 JPEG 编码的 TIFF 图像。

渐进式解码

渐进式解码可在整个图像完成下载之前以增量方式解码和呈现图像部分。 此功能极大地改进了从 Internet 查看图像时的用户体验,因为用户不必等待整个映像下载,然后解码才能开始。 通过渐进式解码,用户可以在下载整个图像之前查看具有可用数据的图像预览。 此功能对于任何用于查看来自 Internet 或数据源且带宽受限的数据源的图像的应用程序都至关重要。

有关详细信息,请参阅 渐进式解码概述

JPEG、PNG 和 GIF 的扩展元数据支持

在 Windows 7 中,WIC 扩展了对 JPEG、PNG 和 GIF 图像的元数据支持。

  • 添加了对动态 GIF 和 GIF 属性的支持。
  • 扩展的 JPG 元数据处理程序支持色度、亮度和注释元数据。
  • 扩展的 PNG 元数据处理程序以支持 tIME、sRGB、iCCP、hIST、cHRM、iTXt、bKGD 和 gAMA 元数据。
  • 为 ResolutionInfo 元数据和 IPTC 摘要元数据添加了新的 8BIM 元数据处理程序。
  • 添加了逻辑屏幕描述符 (LSD) 、图像描述符 (IMD) 、图形控制扩展 (GCE) 以及应用程序扩展 (APE) 元数据的新元数据处理程序。
  • 支持跨 APPn 块的元数据。

多线程单元支持

多线程单元中的对象 (MTA) 可由 MTA 中的任意数量的线程并发调用,从而在多核系统和某些服务器方案中提供更好的性能。 此外,在 MTA 中居住的 WIC 编解码器可以调用 MTA 中存在的其他对象,而无需封送费用与位于不同 STA 单元中的线程之间调用相关的封送成本。 在 Windows 7 中,所有现成 WIC 编解码器都已更新以支持 MTA,包括 JPEG、TIFF、PNG、GIF、ICO 和 BMP。 强烈建议编写编解码器以支持 MTA。 不支持 MTA 的编解码器将导致多线程应用程序中由于封送而导致性能下降。 启用 MTA 支持需要在编解码器中实现适当的同步。 这些同步技术的确切实现超出了本文的范围。 下面提供了用于同步组件对象模型 (COM) 对象的常规参考。

元数据工作组实现

目前,有多种元数据存储格式包含重叠属性,没有任何明确的行业标准或指导,用于读取和写入这些元数据格式的一致方法。 为了帮助处理各种格式和属性,元数据工作组 (MWG) 已形成。 MWG 的目的是提供准则,确保各种平台、应用程序和设备之间的互操作性。 MWG 建立的准则适用于 XMP、Exif 和 IPTC 元数据字段,以及 JPEG、TIFF 和 PSD 图像格式。

在 Windows 7 中,照片元数据处理程序和元数据策略层已更新为根据 MWG 建立的准则读取和写入图像元数据。 有关元数据工作组 (MWG) 的详细信息,请查看 已建立的元数据准则

Windows Vista 和 Windows Server 2008 支持Windows 7 个功能

Windows Vista 的平台更新是一组运行时库,开发人员可将应用程序定向到 Windows 7 和 Windows Vista。 Windows Server 2008 的平台更新是一组运行时库,开发人员可将应用程序定向到 Windows Server 2008 R2 和 Windows Server 2008。 Windows Vista 的平台更新和适用于 Windows Server 2008 的平台更新将通过 Windows 更新 向所有 Windows Vista 和 Windows Server 2008 客户提供。 Windows Server 2008 需要适用于 Windows Vista 平台更新或平台更新的第三方应用程序可以Windows 更新检测是否安装了所需的更新;如果不是,Windows 更新将在后台下载并安装它。 有关这两个更新的详细信息,请参阅 Windows Vista 的平台更新