IWICPlanarBitmapFrameEncode::WritePixels 方法 (wincodec.h)

将源平面中的行写入编码格式。

语法

HRESULT WritePixels(
       UINT           lineCount,
  [in] WICBitmapPlane *pPlanes,
       UINT           cPlanes
);

参数

lineCount

类型: UINT

要编码的行数。 有关 WIC Jpeg 特定行计数限制,请参阅“备注”部分。

[in] pPlanes

类型: WICBitmapPlane*

指定编码的每个组件平面的源缓冲区。

cPlanes

类型: UINT

pPlanes 参数指定的分量平面数。

返回值

类型: HRESULT

如果平面和源矩形不符合要求,此方法将失败并 WINCODEC_ERR_IMAGESIZEOUTOFRANGE

如果 IWICBitmapSource 格式不符合编码器要求,则此方法将失败并 WINCODEC_ERR_UNSUPPORTEDPIXELFORMAT

注解

假定连续 的 WritePixel 调用 按顺序向输出图像添加扫描线。 必须先调用 IWICBitmapFrameEncode::InitializeIWICBitmapFrameEncode::SetSizeIWICBitmapFrameEncode::SetPixelFormat,否则此方法将失败。

通过 IWICBitmapFrameEncode::SetPixelFormat 和编解码器特定的编码参数设置的交错像素格式确定受支持的平面格式。

WIC JPEG 编码器:QueryInterface 可用于从 WIC JPEG IWICBitmapFrameEncode 实现获取此接口。 使用此方法使用 WIC JPEG 编码器对 Y'CbCr 数据进行编码时,可以在帧创建期间使用编码器选项配置 chroma 子采样。 有关更多详细信息,请参阅 编码概述IWICBitmapEncoder::CreateNewFrame

根据配置的 chroma 子采样,lineCount 参数具有以下限制:

Chroma Subsampling 行计数限制 色度平面宽度 色度平面高度
4:2:0 2 的倍数,除非调用涵盖图像的最后一个扫描线 lumaWidth / 2 向上舍入到最接近的整数。 lumaHeight / 2 向上舍入到最接近的整数。
4:2:2 任意 lumaWidth / 2 向上舍入到最接近的整数。 任意
4:4:4 任意 任意 任意
4:4:0 2 的倍数,除非调用涵盖图像的最后一个扫描线 任意 llumaHeight / 2 向上舍入到最接近的整数。
 

必须对完整扫描线宽度进行编码,并且位图源的宽度必须与其平面配置匹配。

此外,如果通过 IWICBitmapFrameEncode::SetPixelFormat 设置像素格式,则必须GUID_WICPixelFormat24bppBGR。

传入此方法的位图源支持的像素格式如下所示:

平面计数 平面 1 平面 2 平面 3
3 GUID_WICPixelFormat8bppY GUID_WICPixelFormat8bppCb GUID_WICPixelFormat8bppCr
2 GUID_WICPixelFormat8bppY GUID_WICPixelFormat16bppCbCr N/A

要求

要求
最低受支持的客户端 Windows 8.1 [桌面应用 |UWP 应用]
最低受支持的服务器 Windows Server 2012 R2 [桌面应用 |UWP 应用]
目标平台 Windows
标头 wincodec.h
Library Windowscodecs.lib
DLL Windowscodecs.dll

另请参阅

编码概述

IWICBitmapEncoder::CreateNewFrame

IWICPlanarBitmapFrameEncode