fungsi wiasDownSampleBuffer (wiamdef.h)

Fungsi wiasDownSampleBuffer mengambil buffer data piksel yang selaras dengan DWORD dan downsamples (menghasilkan data gambar dengan resolusi yang lebih rendah) ke ukuran dan resolusi yang ditentukan.

Sintaks

HRESULT wiasDownSampleBuffer(
            LONG                  lFlags,
  [in, out] WIAS_DOWN_SAMPLE_INFO *pInfo
);

Parameter

lFlags

Menentukan sekumpulan bendera yang menentukan perilaku fungsi ini. Saat ini, hanya bendera berikut yang ditentukan.

Bendera Makna
WIAS_GET_DOWNSAMPLED_SIZE_ONLY Jangan salin data downsampled ke buffer tujuan. Sebagai gantinya, atur anggota struktur WIAS_DOWN_SAMPLE_INFO berikut: ulDownSampledHeight, ulDownSampleWidth, ulAlignedHeight, ulAlignedWidth.

[in, out] pInfo

Arahkan ke struktur WIAS_DOWN_SAMPLE_INFO yang berisi semua informasi yang diperlukan untuk operasi downsampling.

Mengembalikan nilai

Jika berhasil, fungsi mengembalikan S_OK.

Jika fungsi gagal, fungsi mengembalikan kesalahan COM standar atau salah satu kode kesalahan WIA.

Keterangan

Fungsi wiasDownSampleBuffer dapat digunakan dengan salah satu dari dua cara berikut:

  • Pemanggil menentukan lebar dan tinggi downsampled (yaitu output) dengan mengatur anggota ulDownSampledWidth dan ulDownSampledHeight dari struktur WIA_DOWN_SAMPLE_INFO .

  • Pemanggil mengatur anggota ulDownSampledWidth dan ulDownSampledHeight dari struktur WIA_DOWN_SAMPLE_INFO ke nol, menunjukkan bahwa fungsi harus memilih lebar dan tinggi output.

Untuk melihat nilai lebar dan tinggi output apa yang dipilih fungsi, panggil fungsi ini dengan parameter lFlags yang diatur ke WIAS_GET_DOWNSAMPLED_SIZE_ONLY. Saat kembali, anggota ulDownSampledWidth dan ulDownSampledHeight diatur ke nilai baru mereka. Tidak ada downsampling yang dilakukan dalam kasus ini.

Pemanggil fungsi ini diperlukan untuk mengisi anggota struktur WIA_DOWN_SAMPLE_INFO berikut:

  • ulOriginalWidth

  • Tinggi ulOriginal

  • ulBitsPerPixel

  • ulXRes

  • ulYRes

  • pSrcBuffer

Fungsi wiasDownSampleBuffer mengharapkan ulBitsPerPixel menjadi 1, 8, atau 24, sesuai dengan data 1-, 8-, dan 24-bit-per-piksel. Pemanggil juga dapat menentukan ukuran data downsampled dengan mengisi anggota struktur WIA_DOWN_SAMPLE_INFO berikut: - ulDownSampledWidthulDownSampledHeight

Jika buffer yang menerima data downsampled telah dialokasikan, pemanggil harus mengisi anggota struktur WIA_DOWN_SAMPLE_INFO ini:

  • ulDestBufSize

  • ulSrcBufSize

  • pDestBuffer

Jika pemanggil mengatur pDestBuffer ke NULL, buffer tujuan dialokasikan oleh layanan WIA. Saat kembali dari fungsi ini, pDestBuffer menunjuk ke buffer tujuan. Pemanggil bertanggung jawab untuk membebaskan memori ini ketika operasi selesai, dan melakukan ini dengan memanggil CoTaskMemFree pada buffer.

Karena fungsi ini tidak dapat menghasilkan baris output parsial, jumlah baris pemindaian dalam buffer input harus menjadi kelipatan bilangan bulat dari faktor penskalaan. Misalnya, buffer input berisi gambar yang diambil sampelnya pada 600 dpi, yang ingin Anda downsample ke gambar 50 dpi yang setara. Dalam hal ini, Anda menurunkan skala gambar asli dengan faktor 12 (karena 600 / 50 = 12). Ini berarti bahwa fungsi harus menerima 12 baris input untuk setiap baris output yang dihasilkannya.

Jika gambar asli memiliki resolusi Rdi dpi, dan akan diturunkan skalanya ke gambar dengan resolusi Rout dpi, faktor penurunan skala adalah Rin / Rout, dan jumlah baris dalam buffer input harus menjadi kelipatan Rin / Rout. Jika kepala pemindaian mencapai pita terakhir dari gambar asli, dan ada terlalu sedikit baris pemindaian di buffer input untuk menghasilkan baris output, pad buffer input sehingga berisi jumlah baris data yang diperlukan. Kegagalan untuk melakukannya menyebabkan hasil yang tidak dapat diprediksi, dan bahkan dapat mengakibatkan crash driver.

Persyaratan

Persyaratan Nilai
Target Platform Desktop
Header wiamdef.h (termasuk Wiamdef.h)
Pustaka Wiaservc.lib
DLL Wiaservc.dll

Lihat juga

WIAS_DOWN_SAMPLE_INFO