Método IWICStream::InitializeFromFilename (wincodec.h)
Inicializa um fluxo de um arquivo específico.
Sintaxe
HRESULT InitializeFromFilename(
[in] LPCWSTR wzFileName,
[in] DWORD dwDesiredAccess
);
Parâmetros
[in] wzFileName
Tipo: LPCWSTR
O arquivo usado para inicializar o fluxo.
[in] dwDesiredAccess
Tipo: DWORD
O modo de acesso ao arquivo desejado.
Valor | Significado |
---|---|
|
Acesso de leitura. |
|
Acesso de gravação. |
Retornar valor
Tipo: HRESULT
Se o método for bem-sucedido, ele retornará S_OK. Caso contrário, ele retornará um código de erro HRESULT.
Comentários
Os métodos de interface IWICStream não permitem que você forneça uma opção de compartilhamento de arquivos. Para criar um fluxo de arquivos compartilhado para uma imagem, use a função SHCreateStreamOnFileEx . Esse fluxo pode ser usado para criar um IWICBitmapDecoder usando o método CreateDecoderFromStream .
Exemplos
Este exemplo demonstra o uso do InitializeFromFilename para criar um decodificador de imagem.
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 | Valor |
---|---|
Cliente mínimo com suporte | Windows XP com SP2, Windows Vista [aplicativos da área de trabalho | Aplicativos UWP] |
Servidor mínimo com suporte | Windows Server 2008 [aplicativos da área de trabalho | Aplicativos UWP] |
Plataforma de Destino | Windows |
Cabeçalho | wincodec.h |
Biblioteca | Windowscodecs.lib |
DLL | Windowscodecs.dll |