Condividi tramite


funzione wiasDownSampleBuffer (wiamdef.h)

La funzione wiasDownSampleBuffer accetta un buffer di dati pixel allineati a DWORD e ne esegue il downcampionamento (produce dati immagine di risoluzione inferiore) alle dimensioni e alla risoluzione specificate.

Sintassi

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

Parametri

lFlags

Specifica un set di flag che determinano il comportamento di questa funzione. Attualmente è definito solo il flag seguente.

Bandiera Significato
WIAS_GET_DOWNSAMPLED_SIZE_ONLY Non copiare i dati di cui è stato fatto il downcampionamento nel buffer di destinazione. Impostare invece i membri seguenti della struttura di WIAS_DOWN_SAMPLE_INFO: ulDownSampledHeight, ulDownSampleWidth, ulAlignedHeight, ulAlignedWidth.

[in, out] pInfo

Puntatore alla struttura WIAS_DOWN_SAMPLE_INFO che contiene tutte le informazioni necessarie per l'operazione di downcampionamento.

Valore restituito

In caso di esito positivo, la funzione restituisce S_OK.

Se la funzione ha esito negativo, restituisce un errore COM standard o uno dei codici di errore wia .

Osservazioni

La funzione wiasDownSampleBuffer può essere usata in uno dei due modi seguenti:

  • Il chiamante specifica la larghezza e l'altezza downsampled (ovvero output) impostando il ulDownSampledWidth e ulDownSampledHeight membri della struttura WIA_DOWN_SAMPLE_INFO.

  • Il chiamante imposta il ulDownSampledWidth e ulDownSampledHeight membri della struttura WIA_DOWN_SAMPLE_INFO su zero, a indicare che la funzione deve scegliere la larghezza e l'altezza di output.

Per visualizzare i valori di larghezza e altezza di output scelti dalla funzione, chiamare questa funzione con il parametro lFlags impostato su WIAS_GET_DOWNSAMPLED_SIZE_ONLY. Al ritorno, i ulDownSampledWidth e ulDownSampledHeight membri vengono impostati sui nuovi valori. In questo caso non viene eseguito alcun downcampion.

Il chiamante di questa funzione è necessario per compilare i membri seguenti della struttura WIA_DOWN_SAMPLE_INFO:

  • ulOriginalWidth

  • ulOriginal Height

  • ulBitsPerPixel

  • ulXRes

  • ulYRes

  • pSrcBuffer

La funzione wiasDownSampleBuffer prevede ulBitsPerPixel essere 1, 8 o 24, corrispondente a dati a 1, 8 e 24 bit per pixel. Il chiamante può anche specificare le dimensioni dei dati downsampled compilando i membri della struttura WIA_DOWN_SAMPLE_INFO seguenti: - ulDownSampledWidthulDownSampledHeight

Se il buffer che riceve i dati downcampionati è già stato allocato, il chiamante deve compilare questi membri della struttura WIA_DOWN_SAMPLE_INFO:

  • ulDestBufSize

  • ulSrcBufSize

  • pDestBuffer

Se il chiamante imposta pDestBuffer su NULL, il buffer di destinazione viene allocato dal servizio WIA. In caso di restituzione da questa funzione, pDestBuffer punta al buffer di destinazione. Il chiamante è responsabile della liberazione di questa memoria al termine dell'operazione e lo esegue chiamando CoTaskMemFree nel buffer.

Poiché questa funzione non è in grado di produrre righe di output parziali, il numero di righe di analisi nel buffer di input deve essere un multiplo intero del fattore di ridimensionamento. Si supponga, ad esempio, che il buffer di input contenga un'immagine campionata a 600 dpi, che si intende eseguire il downsample a un'immagine equivalente a 50 dpi. In questo caso, si sta riducendo l'immagine originale di un fattore pari a 12 (perché 600 / 50 = 12). Ciò significa che la funzione deve ricevere 12 righe di input per ogni riga di output che produce.

Se l'immagine originale ha una risoluzione di Rin dpi e deve essere ridotta a un'immagine con una risoluzione di Rout dpi, il fattore di riduzione delle prestazioni è Rin/Route il numero di righe nel buffer di input deve essere un multiplo diR in/Rout. Se la testa di analisi raggiunge l'ultima banda dell'immagine originale e nel buffer di input sono presenti troppe righe di analisi per produrre una riga di output, inserire il buffer di input in modo che contenga il numero richiesto di righe di dati. La mancata esecuzione di questa operazione causa risultati imprevedibili e può anche causare un arresto anomalo del driver.

Fabbisogno

Requisito Valore
piattaforma di destinazione Desktop
intestazione wiamdef.h (include Wiamdef.h)
libreria Wiaservc.lib
dll Wiaservc.dll

Vedere anche

WIAS_DOWN_SAMPLE_INFO