Bagikan melalui


Menerapkan IWICBitmapFrameDecode

IWICBitmapFrameDecode

IWICBitmapFrameDecode adalah antarmuka tingkat bingkai yang menyediakan akses ke bit gambar aktual. Anda menerapkan antarmuka ini pada kelas decoding tingkat bingkai Anda. Karena berasal dari IWICBitmapSource, implementasi Anda dari IWICBitmapFrameDecode akan mencakup implementasi metode IWICBitmapSource. Metode tambahan pada IWICBitmapFrameDecode menyediakan akses ke thumbnail pada tingkat bingkai, setiap konteks warna untuk gambar, dan pembaca metadata kueri pada bingkai.

interface IWICBitmapFrameDecode : IWICBitmapSource
{
// Required methods
HRESULT GetThumbnail ( IWICBitmapSource **ppIThumbnail );
HRESULT GetColorContexts ( UINT cCount, 
IWICColorContext **ppIColorContexts, UINT *pcActualCount );
HRESULT GetMetadataQueryReader ( IWICMetadataQueryReader **ppIMetadataQueryReader );

// Methods inherited from IWICBitmapSource
HRESULT GetSize ( UINT *puiWidth, UINT *puiHeight );
HRESULT GetPixelFormat ( WICPixelFormatGUID *pPixelFormat );
HRESULT GetResolution ( double *pDpiX, double *pDpiY );
HRESULT CopyPixels ( const WICRect *prc, 
   UINT cbStride,
   UINT cbBufferSize, 
   BYTE *pbBuffer );
// Optional method
HRESULT CopyPalette ( IWICPalette *pIPalette );
}

GetThumbnail

GetThumbnail menghasilkan gambar mini untuk bingkai saat ini. Guna alasan performa, thumbnail paling umum dikodekan dalam format JPEG. Sama seperti Pratinjau pada dekoder, tidak perlu atau disarankan untuk menyediakan dekoder JPEG Anda sendiri untuk gambar mini. Sebagai gantinya, Anda harus mendelegasikan ke dekoder JPEG yang disediakan oleh Komponen Pencitraan Windows (WIC).

Untuk informasi selengkapnya tentang gambar mini, lihat metode SetThumbnail pada Menerapkan IWICBitmapFrameEncode.

GetColorContexts

GetColorContexts mengembalikan konteks warna yang valid (juga dikenal sebagai profil warna) yang terkait dengan gambar dalam bingkai ini. Dalam kebanyakan kasus, ini hanya akan menjadi satu, tetapi mungkin ada kasus di mana ada dua atau, jarang, lebih. Pemanggil akan meneruskan satu atau beberapa objek IWICColorContext, dan mengatur parameter cCount untuk menunjukkan berapa banyak yang mereka teruskan. Metode ini mengisi objek IWICColorContext dengan data konteks warna aktual untuk profil warna yang terkait dengan gambar. Atur parameter pcActualCount ke jumlah konteks warna aktual yang terkait dengan gambar, bahkan jika ini lebih besar dari angka yang dapat Anda kembalikan. (Dalam kasus di mana lebih banyak konteks warna tersedia daripada jumlah objek IWICColorContext yang diteruskan oleh pemanggil, ini memberitahukan kepada pemanggil bahwa ada satu atau beberapa objek lain yang tersedia.)

GetMetadataQueryReader

GetMetadataQueryReader mengembalikan IWICMetadataQueryReader yang dapat digunakan aplikasi untuk mendapatkan metadata dari bingkai gambar. Antarmuka ini diimplementasikan oleh handler metadata, dan memungkinkan aplikasi untuk mengkueri properti metadata tertentu milik format metadata tertentu. Untuk informasi lebih lanjut, lihat Menerapkan IWICMetadataBlockReader.

Untuk membuat instans IWICMetadataQueryReader, panggil CreateQueryReaderFromBlockReader pada IWICComponentFactory.

IWICMetadataQueryReader* pQueryReader = NULL;
HRESULT hr;

hr = m_pComponentFactory->CreateQueryReaderFromBlockReader( 
  static_cast<IWICMetadataBlockWriter*>(this),
  &pQueryReader);

GetSize, GetPixelFormat, dan GetResolution

GetSize, GetPixelFormat, dan GetResolution sudah jelas dengan sendirinya, dan mengembalikan properti gambar yang diminta.

CopyPixels

CopyPixels adalah metode yang dipanggil aplikasi ketika ingin membuat bitmap dalam memori yang dapat dirender ke tampilan atau printer. Ini adalah metode yang melakukan proses decoding sesungguhnya dari bit gambar. Parameter ini adalah sebuah persegi panjang, yang mewakili area yang diminati dalam gambar sumber untuk disalin ke dalam memori; stride, yang menentukan jumlah byte dalam satu baris pemindaian; ukuran buffer dalam memori yang telah dialokasikan oleh aplikasi; dan pointer ke buffer tempat bit gambar yang diminta harus disalin. Untuk mencegah potensi overrun buffer yang dapat menimbulkan kerentanan keamanan, pastikan untuk hanya menyalin data gambar ke dalam buffer sebanyak yang ditentukan oleh parameter cbBufferSize.

CopyPalette

Hanya codec yang memiliki format piksel terindeks yang harus menerapkan metode CopyPalette. Jika gambar menggunakan format terindeks, gunakan metode ini untuk mengembalikan palet warna yang digunakan dalam gambar. Jika codec Anda tidak memiliki format terindeks, kembalikan WINCODEC_ERR_PALETTEUNAVAILABLE.

Referensi

IWICBitmapSource

IWICBitmapDecoder

IWICBitmapFrameDecode

Konseptual

Menerapkan IWICBitmapSource

Menerapkan IWICMetadataBlockReader

Cara Menulis WIC-Enabled CODEC

Gambaran Umum Komponen Pencitraan Windows