IWICFormatConverter::Initialize 메서드(wincodec.h)
형식 변환기를 초기화합니다.
구문
HRESULT Initialize(
[in] IWICBitmapSource *pISource,
[in] REFWICPixelFormatGUID dstFormat,
[in] WICBitmapDitherType dither,
[in] IWICPalette *pIPalette,
[in] double alphaThresholdPercent,
[in] WICBitmapPaletteType paletteTranslate
);
매개 변수
[in] pISource
형식: IWICBitmapSource*
변환할 입력 비트맵
[in] dstFormat
형식: REFWICPixelFormatGUID
대상 픽셀 형식 GUID입니다.
[in] dither
변환에 사용되는 WICBitmapDitherType 입니다.
[in] pIPalette
형식: IWICPalette*
변환에 사용할 색상표입니다.
[in] alphaThresholdPercent
형식: double
변환에 사용할 알파 임계값입니다.
[in] paletteTranslate
변환에 사용할 색상표 변환 형식입니다.
반환 값
형식: HRESULT
메서드가 성공하면 S_OK를 반환하고, 그러지 않으면 HRESULT 오류 코드를 반환합니다.
설명
미리 정의된 색상표가 없는 경우 먼저 팔레트를 만들어야 합니다. InitializeFromBitmap을 사용하여 색상표 개체를 만든 다음 다른 매개 변수와 함께 전달합니다.
dither, pIPalette, alphaThresholdPercent 및 paletteTranslate 은 감소된 비트 깊이 형식으로 변환할 때 색 손실을 완화하는 데 사용됩니다. 이러한 설정이 필요하지 않은 변환의 경우 디더 를 WICBitmapDitherTypeNone으로 설정하고 , pIPalette 를 NULL로 설정하고, alphaThresholdPercent 를 0.0f로 설정하고, paletteTranslate 를 WICBitmapPaletteTypeCustom으로 설정하는 매개 변수 값을 사용해야 합니다.
정렬된 디더를 사용할 때 관련된 기본 알고리즘에는 특정 순서로 WICBitmapPaletteType 열거형에 있는 고정 팔레트가 필요합니다.
출력에 제공된 실제 색상표의 순서가 다르거나 실제 색이 약간 변형될 수 있는 경우가 많습니다. 이는 Microsoft Windows 팔레트를 사용할 때 Windows.To 버전 간에 약간의 차이가 있는 경우 색상표와 색상표 변환기가 형식 변환기로 제공됩니다. pIPalette는 사용할 실제 대상 팔레트이며 paletteTranslate는 고정 팔레트입니다. 변환이 완료되면 가장 가까운 색 일치 알고리즘을 사용하여 고정 색상표에서 pIPalette 의 실제 색으로 색이 매핑됩니다.
pIPalette의 색이 paletteTranslate의 색과 거의 일치하지 않으면 매핑이 바람직하지 않은 결과를 생성할 수 있습니다.
WICBitmapDitherTypeOrdered4x4 는 색 데이터를 정확하게 변환할 방법이 없기 때문에 8비트 형식에서 5비트 또는 6비트 형식으로 형식 변환에 유용할 수 있습니다.
WICBitmapDitherTypeErrorDiffusion 은 오류 확산 알고리즘을 선택하고 모든 색상표와 함께 사용할 수 있습니다. 임의의 팔레트가 제공되면 WICBitmapPaletteCustom 을 paletteTranslate로 전달해야 합니다. 오류 확산은 특히 IWICPalette의 최적화된 색상표 생성 기능과 결합된 경우 정렬된 디더링 알고리즘에 비해 우수한 결과를 제공하는 경우가 많습니다.
PNG(이식 가능한 네트워크 그래픽)와 같은 알파 채널이 있는 비트맵을 8bpp로 변환하는 경우 알파 채널은 일반적으로 무시됩니다. 원래 비트맵에서 투명했던 모든 픽셀은 투명과 검은색 모두 해당 형식의 픽셀 값이 0이므로 최종 출력에서 검은색으로 표시됩니다.
일부 8bpp 콘텐츠는 알파 색을 포함할 수 있습니다. instance 경우 GIF(그래픽 교환 형식) 형식을 사용하면 단일 색상표 항목을 투명한 색으로 사용할 수 있습니다. 이 유형의 콘텐츠에 대해 alphaThresholdPercent 는 투명 색에 매핑해야 하는 투명도의 백분율을 지정합니다. 알파 값은 픽셀의 불투명도(투명도가 아님)에 직접 비례하기 때문에 alphaThresholdPercent 는 완전히 투명한 색에 매핑되는 불투명도 수준을 나타냅니다.
instance 경우 9.8%는 알파 값이 25보다 작은 모든 픽셀이 투명한 색에 매핑됨을 의미합니다. 값이 100%이면 완전히 불투명하지 않은 모든 픽셀이 투명한 색에 매핑됩니다. 색상표는 투명한 색을 제공해야 합니다. 그렇지 않은 경우 '투명' 색은 0에 가장 가까운 색이며 종종 검은색입니다.
예제
다음 예제에서는 이미지 프레임을 디더링 또는 알파 임계값 없이 32bppPBGRA 형식으로 변환합니다. Direct2D를 사용하려면 비트맵 원본이 렌더링을 위해 32bppPBGRA 형식이어야 합니다. IWICFormatConverter의 사용을 보여 주는 전체 샘플은 Direct2D 샘플을 사용하여 WIC 이미지 뷰어를 참조하세요.
HRESULT hr = S_OK;
IWICBitmapDecoder *pIDecoder = NULL;
IWICBitmapFrameDecode *pIDecoderFrame = NULL;
IWICFormatConverter *pIFormatConverter = NULL;
// Create the decoder.
hr = m_pIWICFactory->CreateDecoderFromFilename(
L"turtle.jpg", // Image to be decoded
NULL, // Do not prefer a particular vendor
GENERIC_READ, // Desired read access to the file
WICDecodeMetadataCacheOnDemand, // Cache metadata when needed
&pIDecoder // Pointer to the decoder
);
// Retrieve the first bitmap frame.
if (SUCCEEDED(hr))
{
hr = pIDecoder->GetFrame(0, &pIDecoderFrame);
}
// Create the flip/rotator.
if (SUCCEEDED(hr))
{
hr = m_pIWICFactory->CreateFormatConverter(&pIFormatConverter);
}
// Initialize the format converter.
if (SUCCEEDED(hr))
{
hr = pIFormatConverter->Initialize(
pIDecoderFrame, // Input source to convert
GUID_WICPixelFormat32bppPBGRA, // Destination pixel format
WICBitmapDitherTypeNone, // Specified dither pattern
NULL, // Specify a particular palette
0.f, // Alpha threshold
WICBitmapPaletteTypeCustom // Palette translation type
);
}
//Create render target and D2D bitmap from IWICBitmapSource
if (SUCCEEDED(hr))
{
hr = CreateDeviceResources(hWnd);
}
if (SUCCEEDED(hr))
{
// Need to release the previous D2DBitmap if there is one
SafeRelease(&m_pD2DBitmap);
hr = m_pRT->CreateBitmapFromWicBitmap(pIFormatConverter, NULL, &m_pD2DBitmap);
}
SafeRelease(&pIFormatConverter);
SafeRelease(&pIDecoderFrame);
SafeRelease(&pIDecoder);
요구 사항
지원되는 최소 클라이언트 | WINDOWS XP SP2, Windows Vista [데스크톱 앱 | UWP 앱] |
지원되는 최소 서버 | Windows Server 2008 [데스크톱 앱 | UWP 앱] |
대상 플랫폼 | Windows |
헤더 | wincodec.h |
라이브러리 | Windowscodecs.lib |
DLL | Windowscodecs.dll |