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::Initialize、IWICBitmapFrameEncode::SetSize 和 IWICBitmapFrameEncode::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 |