Condividi tramite


Implementazione di IWICBitmapFrameDecode

IWICBitmapFrameDecode

IWICBitmapFrameDecode è l'interfaccia a livello di fotogramma che fornisce l'accesso ai bit effettivi dell'immagine. Questa interfaccia viene implementata nella classe di decodifica a livello di frame. Poiché deriva da IWICBitmapSource, l'implementazione di IWICBitmapFrameDecode includerà un'implementazione dei metodi IWICBitmapSource. I metodi aggiuntivi in IWICBitmapFrameDecode forniscono l'accesso all'anteprima a livello di fotogramma, ai contesti di colore per l'immagine e al lettore di query dei metadati per il fotogramma.

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 restituisce l'anteprima per il fotogramma corrente. Per motivi di prestazioni, le anteprime vengono generalmente codificate in un formato JPEG. Proprio come con l'anteprima sul decodificatore, non è necessario o consigliato fornire il proprio decodificatore JPEG per le anteprime. È invece necessario delegare al decodificatore JPEG fornito da Windows Imaging Component (WIC).

Per altre informazioni sulle anteprime, vedere il metodo SetThumbnail nell'implementazione di IWICBitmapFrameEncode.

GetColorContexts

GetColorContexts restituisce i contesti di colore validi (noti anche come profili di colore) associati all'immagine in questa cornice. Nella maggior parte dei casi, questo sarà solo uno, ma potrebbero esserci casi in cui ci sono due o, raramente, più. Il chiamante passerà uno o più oggetti IWICColorContext, impostando il parametro cCount per indicare quanti oggetti passano. Questo metodo popola gli oggetti IWICColorContext con i dati effettivi del contesto di colore per i profili di colore associati all'immagine. Impostare il parametro pcActualCount sul numero effettivo di contesti di colore associati all'immagine, anche se questo è maggiore del numero che è possibile restituire. Nel caso in cui siano disponibili più contesti di colore rispetto al numero di oggetti IWICColorContext passati in input dal chiamante, segnala al chiamante la disponibilità di uno o più altri.

GetMetadataQueryReader

GetMetadataQueryReader restituisce un IWICMetadataQueryReader che un'applicazione può usare per recuperare i metadati dal frame dell'immagine. Questa interfaccia viene implementata da un gestore di metadati e consente a un'applicazione di eseguire query per proprietà di metadati specifiche appartenenti a un formato di metadati specifico. Per altre informazioni, vedere Implementazione di IWICMetadataBlockReader.

Per creare un'istanza di un IWICMetadataQueryReader, chiamare CreateQueryReaderFromBlockReader nel IWICComponentFactory.

IWICMetadataQueryReader* pQueryReader = NULL;
HRESULT hr;

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

GetSize, GetPixelFormat e GetResolution

GetSize, GetPixelFormate GetResolution sono autoesplicativi e restituiscono le proprietà richieste dell'immagine.

CopiaPixel

CopyPixels è il metodo chiamato da un'applicazione quando vuole creare una bitmap in memoria di cui è possibile eseguire il rendering sullo schermo o sulla stampante. Si tratta del metodo che esegue la decodifica effettiva dei bit dell'immagine. I parametri sono un rettangolo, che rappresenta l'area di interesse nell'immagine di origine da copiare in memoria; stride, che specifica il numero di byte in una riga di analisi; la dimensione del buffer in memoria allocata dall'applicazione; e un puntatore al buffer in cui devono essere copiati i bit dell'immagine richiesta. Per impedire potenziali sovraccarichi del buffer di introdurre vulnerabilità di sicurezza, assicurarsi di copiare nel buffer solo la quantità di dati di immagine specificata dal parametro cbBufferSize.

CopyPalette

Devono implementare il metodo CopyPalette solo i codec che hanno formati pixel indicizzati. Se un'immagine usa un formato indicizzato, usare questo metodo per restituire la tavolozza dei colori usati nell'immagine. Se il codec non ha un formato indicizzato, restituire WINCODEC_ERR_PALETTEUNAVAILABLE.

Riferimento

IWICBitmapSource

IWICBitmapDecoder

IWICBitmapFrameDecode

concettuale

Implementazione di IWICBitmapSource

Implementare IWICMetadataBlockReader

Come scrivere un WIC-Enabled CODEC

Panoramica componente Windows Imaging