Een bitmapbron schalen
In dit onderwerp wordt gedemonstreert hoe u een IWICBitmapSource- schaalt met behulp van het onderdeel IWICBitmapScaler.
Een bitmapbron schalen
Maak een IWICImagingFactory-object om WIC-objecten (Windows Imaging Component) te maken.
// Create WIC factory hr = CoCreateInstance( CLSID_WICImagingFactory, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&m_pIWICFactory) );
Gebruik de methode CreateDecoderFromFilename om een IWICBitmapDecoder- te maken op basis van een afbeeldingsbestand.
HRESULT hr = S_OK; IWICBitmapDecoder *pIDecoder = NULL; IWICBitmapFrameDecode *pIDecoderFrame = NULL; IWICBitmapScaler *pIScaler = NULL; hr = m_pIWICFactory->CreateDecoderFromFilename( L"turtle.jpg", // Image to be decoded NULL, // Do not prefer a particular vendor GENERIC_READ, // Desired read access to the file WICDecodeMetadataCacheOnDemand, // Cache metadata when needed &pIDecoder // Pointer to the decoder );
Haal het eerste IWICBitmapFrameDecode van de afbeelding op.
// Retrieve the first bitmap frame. if (SUCCEEDED(hr)) { hr = pIDecoder->GetFrame(0, &pIDecoderFrame); }
De JPEG-bestandsindeling ondersteunt slechts één frame. Omdat het bestand in dit voorbeeld een JPEG-bestand is, wordt het eerste frame (
0
) gebruikt. Zie voor afbeeldingsindelingen met meerdere frames Het ophalen van de frames van een afbeelding voor toegang tot elk frame van de afbeelding.Maak de IWICBitmapScaler- aan om te gebruiken voor het schalen van de afbeelding.
// Create the scaler. if (SUCCEEDED(hr)) { hr = m_pIWICFactory->CreateBitmapScaler(&pIScaler); }
Initialiseer het schaalobject met de afbeeldingsgegevens van het bitmapframe op halve grootte.
// Initialize the scaler to half the size of the original source. if (SUCCEEDED(hr)) { hr = pIScaler->Initialize( pIDecoderFrame, // Bitmap source to scale. uiWidth/2, // Scale width to half of original. uiHeight/2, // Scale height to half of original. WICBitmapInterpolationModeFant); // Use Fant mode interpolation. }
Teken of verwerkt de geschaalde bitmapbron.
In de volgende afbeelding ziet u het schalen van afbeeldingen. De oorspronkelijke afbeelding aan de linkerkant is 200 x 130 pixels. De afbeelding aan de rechterkant is de oorspronkelijke afbeelding die is geschaald tot de helft van de grootte.
Zie ook