Bagikan melalui


Cara Menskalakan Sumber Bitmap

Topik ini menunjukkan cara menskalakan IWICBitmapSource menggunakan komponen IWICBitmapScaler .

Untuk menskalakan sumber bitmap

  1. Buat objek IWICImagingFactory untuk membuat objek Komponen Pencitraan Windows (WIC).

    // Create WIC factory
    hr = CoCreateInstance(
        CLSID_WICImagingFactory,
        NULL,
        CLSCTX_INPROC_SERVER,
        IID_PPV_ARGS(&m_pIWICFactory)
        );
    
  2. Gunakan metode CreateDecoderFromFilename untuk membuat IWICBitmapDecoder dari file gambar.

    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
       );
    
  3. Dapatkan IWICBitmapFrameDecode pertama dari gambar.

    // Retrieve the first bitmap frame.
    if (SUCCEEDED(hr))
    {
       hr = pIDecoder->GetFrame(0, &pIDecoderFrame);
    }
    

    Format file JPEG hanya mendukung satu bingkai. Karena file dalam contoh ini adalah file JPEG, bingkai pertama (0) digunakan. Untuk format gambar yang memiliki beberapa bingkai, lihat Cara Mengambil Bingkai Gambar untuk mengakses setiap bingkai gambar.

  4. Buat IWICBitmapScaler untuk digunakan untuk penskalaan gambar.

    // Create the scaler.
    if (SUCCEEDED(hr))
    {
       hr = m_pIWICFactory->CreateBitmapScaler(&pIScaler);
    }
    
  5. Inisialisasi objek scaler dengan data gambar bingkai bitmap pada setengah ukuran.

    // 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.
    }
    
  6. Gambar atau proses sumber bitmap yang diskalakan.

    Ilustrasi berikut menunjukkan penskalaan pencitraan. Gambar asli di sebelah kiri adalah 200 x 130 piksel. Gambar di sebelah kanan adalah gambar asli yang diskalakan hingga setengah ukurannya.

    ilustrasi memperlihatkan penskalaan gambar ke ukuran yang lebih kecil

Lihat juga

Panduan Pemrograman

Referensi

Sampel