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 |