Condividi tramite


funzione wiasDownSampleBuffer (wiamdef.h)

La funzione wiasDownSampleBuffer acquisisce un buffer di dati pixel allineati con DWORD e ne esegue il downcampion (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.

Contrassegno Significato
WIAS_GET_DOWNSAMPLED_SIZE_ONLY Non copiare i dati sottocampionati nel buffer di destinazione. Impostare invece i membri seguenti della struttura 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 downsampling.

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.

Commenti

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

  • Il chiamante specifica la larghezza e l'altezza del sottocampionamento ,ovvero output, impostando i membri ulDownSampledWidth e ulDownSampledHeight della struttura WIA_DOWN_SAMPLE_INFO .

  • Il chiamante imposta i membri ulDownSampledWidth e ulDownSampledHeight della struttura WIA_DOWN_SAMPLE_INFO su zero, a indicare che la funzione deve scegliere la larghezza e l'altezza dell'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. In caso di ritorno, i membri ulDownSampledWidth e ulDownSampledHeight 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 che ulBitsPerPixel sia 1, 8 o 24, corrispondente a dati a 1, 8 e 24 bit per pixel. Il chiamante può anche specificare le dimensioni dei dati di sottocampionamento compilando i membri della struttura WIA_DOWN_SAMPLE_INFO seguenti: - ulDownSampledWidthulDownSampledHeight

Se il buffer che riceve i dati con downcampion è 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. Al ritorno da questa funzione , pDestBuffer punta al buffer di destinazione. Il chiamante è responsabile della liberazione di questa memoria al termine dell'operazione ed esegue questa operazione 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 ridimensiona 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 prodotta.

Se l'immagine originale ha una risoluzione di Rin dpi e deve essere ridotta a un'immagine con una risoluzione di dpiout R, il fattore di riduzione è Rin /Rout e il numero di righe nel buffer di input deve essere un multiplo di Rin /Rout. Se l'intestazione 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 necessario di righe di dati. La mancata esecuzione di questa operazione causa risultati imprevedibili e può anche causare un arresto anomalo del driver.

Requisiti

Requisito Valore
Piattaforma di destinazione Desktop
Intestazione wiamdef.h (include Wiamdef.h)
Libreria Wiaservc.lib
DLL Wiaservc.dll

Vedi anche

WIAS_DOWN_SAMPLE_INFO