Поделиться через


функция wiasDownSampleBuffer (wiamdef.h)

Функция wiasDownSampleBuffer принимает в буфер данных пикселей, выровненных по протоколу DWORD, и уменьшает его (создает данные изображения нижнего разрешения) к указанному размеру и разрешению.

Синтаксис

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

Параметры

lFlags

Задает набор флагов, определяющих поведение этой функции. В настоящее время определен только следующий флаг.

Флаг Значение
WIAS_GET_DOWNSAMPLED_SIZE_ONLY Не копируйте данные вниз в целевой буфер. Вместо этого задайте следующие члены структуры WIAS_DOWN_SAMPLE_INFO: ulDownSampledHeight, ulDownSampleWidth, ulAlignedHeight, ulAlignedWidth.

[in, out] pInfo

Указатель на структуру WIAS_DOWN_SAMPLE_INFO, содержащую всю информацию, необходимую для операции уменьшения.

Возвращаемое значение

При успешном выполнении функция возвращает S_OK.

Если функция завершается ошибкой, она возвращает стандартную ошибку COM или один из кодов ошибок WIA.

Замечания

Функцию wiasDownSampleBuffer можно использовать двумя способами:

  • Вызывающий объект задает ширину и высоту вниз (то есть выходные данные), задав ulDownSampledWidth и ulDownSampledHeight членов структуры WIA_DOWN_SAMPLE_INFO.

  • Вызывающий объект задает ulDownSampledWidth и ulDownSampledHeight члены структуры WIA_DOWN_SAMPLE_INFO равны нулю, указывая, что функция должна выбрать выходную ширину и высоту.

Чтобы узнать, какие выходные значения ширины и высоты выбирает функция, вызовите эту функцию с параметром lFlags, равным WIAS_GET_DOWNSAMPLED_SIZE_ONLY. При возвращении элементы ulDownSampledWidth и ulDownSampledHeight задаются для новых значений. В этом случае не выполняется понижение.

Вызывающий объект этой функции необходим для заполнения следующих элементов структуры WIA_DOWN_SAMPLE_INFO:

  • ulOriginalWidth

  • ulOriginal Height

  • ulBitsPerPixel

  • ulXRes

  • ulYRes

  • pSrcBuffer

Функция wiasDownSampleBuffer ожидает, что ulBitsPerPixel 1, 8 или 24, соответствующие 1, 8 и 24-разрядным данным на пиксель. Вызывающий объект также может указать размер неупорядоченных данных, заполнив следующие элементы структуры WIA_DOWN_SAMPLE_INFO: — ulDownSampledWidthulDownSampledHeight

Если буфер, получающий неуправляемые данные, уже выделен, вызывающий объект должен заполнить следующие элементы структуры WIA_DOWN_SAMPLE_INFO:

  • ulDestBufSize

  • ulSrcBufSize

  • pDestBuffer

Если вызывающий объект задает pDestBuffer значение NULL, то целевой буфер выделяется службой WIA. При возврате из этой функции pDestBuffer указывает на целевой буфер. Вызывающий объект отвечает за освобождение этой памяти после завершения операции и выполняет это путем вызова CoTaskMemFree в буфере.

Так как эта функция не может создавать частичные выходные линии, количество строк сканирования в входном буфере должно быть целым числом, кратным из коэффициента масштабирования. Например, предположим, что входной буфер содержит образ, образ, приведенный в 600 dpi, который планируется уменьшить до эквивалентного 50-dpi изображения. В этом случае вы масштабируетсяе исходное изображение на коэффициент 12 (так как 600 /50 = 12). Это означает, что функция должна получать 12 входных строк для каждой выходной строки, которую она создает.

Если исходное изображение имеет разрешение Rв dpi, и должен быть масштабирован до изображения с разрешением R dpi, коэффициент масштабирования — Rв / R, а количество строк в входном буфере должно быть несколькоВ /Rвне. Если головка сканирования достигает последней полосы исходного изображения, и в входном буфере слишком мало строк сканирования, чтобы создать выходную линию, наведите входной буфер, чтобы он содержал требуемое количество строк данных. Сбой этого приводит к непредсказуемым результатам и даже может привести к сбою водителя.

Требования

Требование Ценность
целевая платформа Настольный
заголовка wiamdef.h (включая Wiamdef.h)
библиотеки Wiaservc.lib
DLL Wiaservc.dll

См. также

WIAS_DOWN_SAMPLE_INFO