Método IWICStream::InitializeFromFilename (wincodec.h)
Inicializa una secuencia desde un archivo determinado.
Sintaxis
HRESULT InitializeFromFilename(
[in] LPCWSTR wzFileName,
[in] DWORD dwDesiredAccess
);
Parámetros
[in] wzFileName
Tipo: LPCWSTR
Archivo que se usa para inicializar la secuencia.
[in] dwDesiredAccess
Tipo: DWORD
Modo de acceso a archivos deseado.
Valor | Significado |
---|---|
|
Acceso de lectura. |
|
Acceso de escritura. |
Valor devuelto
Tipo: HRESULT
Si este método se realiza correctamente, devuelve S_OK. De lo contrario, devuelve un código de error de HRESULT.
Comentarios
Los métodos de interfaz IWICStream no permiten proporcionar una opción de uso compartido de archivos. Para crear un flujo de archivo compartido para una imagen, use la función SHCreateStreamOnFileEx . A continuación, esta secuencia se puede usar para crear un IWICBitmapDecoder mediante el método CreateDecoderFromStream .
Ejemplos
En este ejemplo se muestra el uso de InitializeFromFilename para crear un descodificador de imágenes.
IWICImagingFactory *pFactory = NULL;
IWICStream *pStream = NULL;
IWICBitmapDecoder *pDecoder = NULL;
HRESULT hr = CoCreateInstance(
CLSID_WICImagingFactory,
NULL,
CLSCTX_INPROC_SERVER,
IID_PPV_ARGS(&pFactory));
// Create the stream.
if (SUCCEEDED(hr))
{
hr = pFactory->CreateStream(&pStream);
}
// Initialize the stream from a specific file.
if (SUCCEEDED(hr))
{
hr = pStream->InitializeFromFilename(L"test.jpg", GENERIC_READ);
}
// Create a JPEG decoder.
// Since the stream is created from the JPEG file, an explicit JPEG decoder
// can be created using the generic IWICImagingFactory::CreateDecoder method.
// However, use IWICImagingFactory::CreateDecoderFromStream method to auto
// detect the stream and instantiate the appropriate codec.
if (SUCCEEDED(hr))
{
hr = pFactory->CreateDecoder(
GUID_ContainerFormatJpeg, // Explicitly create a JPEG decoder.
NULL, // No preferred vendor.
&pDecoder); // Pointer to the decoder.
}
// Initialize the decoder
if (SUCCEEDED(hr))
{
hr = pDecoder->Initialize(
pStream, // The stream to use.
WICDecodeMetadataCacheOnDemand); // Decode metadata when needed.
}
// Process image frame.
if (SUCCEEDED(hr))
{
UINT cFrames = 0;
hr = pDecoder->GetFrameCount(&cFrames);
if (SUCCEEDED(hr) && (cFrames > 0))
{
UINT width = 0, height = 0;
IWICBitmapFrameDecode *pBitmapFrame = NULL;
hr = pDecoder->GetFrame(0, &pBitmapFrame);
if (SUCCEEDED(hr))
{
// Do something with the frame here.
}
if (pBitmapFrame)
{
pBitmapFrame->Release();
}
}
}
if (pStream)
{
pStream->Release();
}
if (pFactory)
{
pFactory->Release();
}
if (pDecoder)
{
pDecoder->Release();
}
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows XP con SP2, Windows Vista [aplicaciones de escritorio | Aplicaciones para UWP] |
Servidor mínimo compatible | Windows Server 2008 [aplicaciones de escritorio | aplicaciones para UWP] |
Plataforma de destino | Windows |
Encabezado | wincodec.h |
Library | Windowscodecs.lib |
Archivo DLL | Windowscodecs.dll |