位图源概述

本主题介绍位图源、核心 Windows 图像处理组件 (WIC) 组件,表示图像的位图像素。

本主题包含以下各节:

位图源

IWICBitmapSource 组件是 WIC 的基本构建基块,表示一组像素。 位图源可以是多帧图像的单个帧,也可以是在位图源上执行的转换的结果。 IWICBitmapSource 接口是许多主要 WIC 接口(例如解码器帧 IWICBitmapFrameDecode)和转换位图源(如 IWICBitmapFlipRotator)的基础。

下表描述了 WIC 提供的不同位图源组件。

位图源 说明
IWICBitmapFrameDecode 表示解码器图像帧。
IWICBitmap 为位图源提供可写性和内存中表示形式。
IWICBitmapClipper 将位图源剪裁为所需的矩形。
IWICBitmapFlipRotator 将位图源翻转和/或旋转到所需方向。
IWICBitmapScaler 将位图源缩放到所需的大小。
IWICColorTransform 转换位图源的颜色上下文。
IWICFormatConverter 转换位图源的像素格式。

 

位图帧

最常见的 IWICBitmapSourceIWICBitmapFrameDecode。 此接口用于访问图像格式的实际位图数据。 许多图像格式仅支持单个位图帧,而其他格式(如 GIF 和 TIFF)则支持每个图像多个帧。

有关从图像获取位图帧的示例,请参阅 如何检索图像的帧 主题。

位图

IWICBitmap 将可写性和内存中静态的概念添加到位图源。 WIC 位图使用户能够直接访问位图源的像素。 此直接访问由 Lock 方法提供,并支持对位图像素的读取和/或写入访问的任意组合。 Lock 方法锁定指定的位图矩形,并提供一个 IWICBitmapLock 对象来访问像素。

有关使用 IWICBitmapIWICBitmapLock 对象的示例,请参阅 如何修改位图源的像素 主题。

转换位图源

WIC 提供了多个转换像素数据的 IWICBitmapSource 接口。 具体而言,WIC 提供位图源转换,用于缩放、剪裁、旋转和翻转像素数据。 这些位图源转换是 IWICBitmapClipperIWICBitmapScalerIWICBitmapFlipRotator。 其中每个位图源都有一个方法来初始化和创建新的转换后的位图源。 例如, IWICBitmapClipper 包含 Initialize 方法。 此方法使用给定 WICRect 处输入位图源的剪裁像素数据初始化剪辑器位图源。

以下操作方法主题演示转换位图源的不同用法。

像素格式和颜色上下文转换器

WIC 还提供位图源,用于转换位图源的像素格式和颜色上下文。 WIC 为这些操作提供 IWICFormatConverterIWICColorTransform

IWICFormatConverter 将给定位图源从一种像素格式转换为另一种像素格式。

有关使用 IWICFormatConverter 的示例,请参阅 如何使用 Direct2D 绘制位图源 主题。

绘制位图源

WIC 是一种静态图像编解码器技术,用于管理图像数据和元数据,并且本质上不提供呈现图像的方法。 但是,可以使用多种 Windows 图形技术(例如 Direct2D、Windows 图形设备接口 (GDI) 和 Windows GDI+)绘制位图源。 其中每一种技术都与 WIC 具有不同级别的互操作性。 Direct2D 通过 ID2D1Bitmap 接口和 ID2D1RenderTarget::CreateBitmapFromWicBitmap 方法提供直接互操作性,而 GDI 和 GDI+ 则要求用户将位图源像素复制到 位图中。

以下示例演示如何使用 Direct2D 绘制位图源。

概念性

Windows 映像组件概述

编码概述

其他资源

如何编写WIC-Enabled编解码器