定位和打开压缩器和解压缩器
[与此页面关联的功能 视频压缩管理器是一项旧功能。 Microsoft 强烈建议新代码不使用此功能。]
以下示例使用 ICLocate 函数查找可以压缩每像素 8 位位图的压缩器。
BITMAPINFOHEADER bih;
HIC hIC
// Initialize the bitmap structure.
bih.biSize = sizeof(BITMAPINFOHEADER);
bih.biWidth = bih.biHeight = 0;
bih.biPlanes = 1;
bih.biCompression = BI_RGB; // standard RGB bitmap
bih.biBitcount = 8; // 8 bits-per-pixel format
bih.biSizeImage = 0;
bih.biXPelsPerMeter = bih.biYPelsPerMeter = 0;
bih.biClrUsed = bih.biClrImportant = 256;
hIC = ICLocate (ICTYPE_VIDEO, 0L, (LPBITMAPINFOHEADER) &bih,
NULL, ICMODE_COMPRESS);
以下示例枚举系统中的解压缩器,以查找可以处理其图像格式的解压缩器。 此示例使用 ICTYPE_VIDEO (等效于“VIDC”四字符代码) 和 ICDecompressQuery 宏来确定压缩器或解压缩器是否支持图像格式。
for (i=0; ICInfo(fccType, i, &icinfo); i++)
{
hic = ICOpen(icinfo.fccType, icinfo.fccHandler, ICMODE_QUERY);
if (hic)
{
// Skip this compressor if it can't handle the format.
if (fccType == ICTYPE_VIDEO && pvIn != NULL &&
ICDecompressQuery(hic, pvIn, NULL) != ICERR_OK)
{
ICClose(hic);
continue;
}
// Find out the compressor name.
ICGetInfo(hic, &icinfo, sizeof(icinfo));
// Add it to the combo box.
n = ComboBox_AddString(hwndC,icinfo.szDescription);
ComboBox_SetItemData(hwndC, n, hic);
}
}
以下示例尝试查找特定的压缩器,以将 8 位 RGB 格式压缩为 8 位 RLE 格式。
BITMAPINFOHEADER bihIn, bihOut;
HIC hIC
// Initialize the bitmap structure.
biSize = bihOut.biSize = sizeof(BITMAPINFOHEADER);
bihIn.biWidth = bihIn.biHeight = bihOut.biWidth = bihOut.biHeight = 0;
bihIn.biPlanes = bihOut.biPlanes= 1;
bihIn.biCompression = BI_RGB; // standard RGB bitmap for input
bihOut.biCompression = BI_RLE8; // 8-bit RLE for output format
bihIn.biBitcount = bihOut.biBitCount = 8; // 8 bits-per-pixel format
bihIn.biSizeImage = bihOut.biSizeImage = 0;
bihIn.biXPelsPerMeter = bih.biYPelsPerMeter =
bihOut.biXPelsPerMeter = bihOut.biYPelsPerMeter = 0;
bihIn.biClrUsed = bih.biClrImportant =
bihOut.biClrUsed = bihOut.biClrImportant = 256;
hIC = ICLocate (ICTYPE_VIDEO, 0L,
(LPBITMAPINFOHEADER)&bihIn,
(LPBITMAPINFOHEADER)&bihOut, ICMODE_COMPRESS);
相关主题