IWICStream::InitializeFromFilename method (wincodec.h)
Menginisialisasi aliran dari file tertentu.
Sintaks
HRESULT InitializeFromFilename(
[in] LPCWSTR wzFileName,
[in] DWORD dwDesiredAccess
);
Parameter
[in] wzFileName
Jenis: LPCWSTR
File yang digunakan untuk menginisialisasi aliran.
[in] dwDesiredAccess
Jenis: DWORD
Mode akses file yang diinginkan.
Nilai | Makna |
---|---|
|
Akses baca. |
|
Akses tulis. |
Nilai kembali
Jenis: HRESULT
Jika metode ini berhasil, metode ini mengembalikan S_OK. Jika tidak, kode kesalahan HRESULT akan dikembalikan.
Keterangan
Metode antarmuka IWICStream tidak memungkinkan Anda untuk menyediakan opsi berbagi file. Untuk membuat aliran file bersama untuk gambar, gunakan fungsi SHCreateStreamOnFileEx . Aliran ini kemudian dapat digunakan untuk membuat IWICBitmapDecoder menggunakan metode CreateDecoderFromStream .
Contoh
Contoh ini menunjukkan penggunaan InitializeFromFilename untuk membuat dekoder gambar.
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();
}
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows XP dengan SP2, Windows Vista [aplikasi desktop | Aplikasi UWP] |
Server minimum yang didukung | Windows Server 2008 [aplikasi desktop | Aplikasi UWP] |
Target Platform | Windows |
Header | wincodec.h |
Pustaka | Windowscodecs.lib |
DLL | Windowscodecs.dll |
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk