Freigeben über


wiasDownSampleBuffer-Funktion (wiamdef.h)

Die wiasDownSampleBuffer-Funktion nimmt einen Puffer von DWORD-ausgerichteten Pixeldaten auf und reduziert sie (erzeugt Bilddaten mit niedrigerer Auflösung) auf die angegebene Größe und Auflösung.

Syntax

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

Parameter

lFlags

Gibt eine Reihe von Flags an, die das Verhalten dieser Funktion bestimmen. Derzeit wird nur das folgende Flag definiert.

Flag Bedeutung
WIAS_GET_DOWNSAMPLED_SIZE_ONLY Kopieren Sie die herunterstempelten Daten nicht in den Zielpuffer. Legen Sie stattdessen die folgenden Elemente der WIAS_DOWN_SAMPLE_INFO-Struktur fest: ulDownSampledHeight, ulDownSampleWidth, ulAlignedHeight, ulAlignedWidth.

[in, out] pInfo

Zeiger auf die WIAS_DOWN_SAMPLE_INFO-Struktur , die alle Informationen enthält, die für den Downsampling-Vorgang benötigt werden.

Rückgabewert

Bei Erfolg gibt die Funktion S_OK zurück.

Wenn die Funktion fehlschlägt, gibt sie einen COM-Standardfehler oder einen der WIA-Fehlercodes zurück.

Hinweise

Die wiasDownSampleBuffer-Funktion kann auf eine der folgenden beiden Arten verwendet werden:

  • Der Aufrufer gibt die herabgestampelte Breite und Höhe (d. h. Ausgabe) an, indem die Elemente ulDownSampledWidth und ulDownSampledHeight der WIA_DOWN_SAMPLE_INFO-Struktur festgelegt werden.

  • Der Aufrufer legt die Member ulDownSampledWidth und ulDownSampledHeight der WIA_DOWN_SAMPLE_INFO-Struktur auf 0 fest, was angibt, dass die Funktion die Ausgabebreite und -höhe auswählen soll.

Um zu sehen, welche Ausgabebreiten- und Höhenwerte die Funktion auswählt, rufen Sie diese Funktion auf, wobei der lFlags-Parameter auf WIAS_GET_DOWNSAMPLED_SIZE_ONLY festgelegt ist. Bei der Rückgabe werden die Member ulDownSampledWidth und ulDownSampledHeight auf ihre neuen Werte festgelegt. In diesem Fall wird kein Downsampling durchgeführt.

Der Aufrufer dieser Funktion muss die folgenden Elemente der WIA_DOWN_SAMPLE_INFO-Struktur ausfüllen:

  • ulOriginalWidth

  • ulOriginale Höhe

  • ulBitsPerPixel

  • ulXRes

  • ulYRes

  • pSrcBuffer

Die wiasDownSampleBuffer-Funktion erwartet , dass ulBitsPerPixel 1, 8 oder 24 sein wird, was 1-, 8- und 24-Bit-Daten pro Pixel entspricht. Der Aufrufer kann auch die Größe der downsampledten Daten angeben, indem er die folgenden WIA_DOWN_SAMPLE_INFO-Strukturmber eingibt: - ulDownSampledWidthulDownSampledHeight

Wenn der Puffer, der die herunterstempelten Daten empfängt, bereits zugeordnet wurde, sollte der Aufrufer die folgenden WIA_DOWN_SAMPLE_INFO Strukturmber ausfüllen:

  • ulDestBufSize

  • ulSrcBufSize

  • pDestBuffer

Wenn der Aufrufer pDestBuffer auf NULL festlegt, wird der Zielpuffer vom WIA-Dienst zugewiesen. Bei der Rückkehr von dieser Funktion zeigt pDestBuffer auf den Zielpuffer. Der Aufrufer ist dafür verantwortlich, diesen Arbeitsspeicher freizugeben, wenn der Vorgang abgeschlossen ist, und ruft dazu CoTaskMemFree im Puffer auf.

Da diese Funktion keine Teilausgabezeilen erzeugen kann, muss die Anzahl der Scanzeilen im Eingabepuffer ein ganzzahliges Vielfaches des Skalierungsfaktors sein. Angenommen, der Eingabepuffer enthält ein Bild mit einer Stichprobe von 600 dpi, das Sie auf ein entsprechendes 50 dpi-Bild herunterstempeln möchten. In diesem Fall skalieren Sie das ursprüngliche Bild um den Faktor 12 herunter (weil 600 / 50 = 12). Dies bedeutet, dass die Funktion 12 Eingabezeilen für jede Ausgabezeile empfangen muss, die sie erzeugt.

Wenn das Ursprüngliche Bild eine Auflösung von Rin dpi aufweist und auf ein Bild mit einer Auflösung von Rout dpi herunterskaliert werden soll, ist der Herunterskalierungsfaktor Rin /Rout, und die Anzahl der Zeilen im Eingabepuffer sollte ein Vielfaches von Rin /Rout sein. Wenn der Scankopf das letzte Band des originalen Bilds erreicht und zu wenige Scanzeilen im Eingabepuffer vorhanden sind, um eine Ausgabezeile zu erzeugen, legen Sie den Eingabepuffer so ein, dass er die erforderliche Anzahl von Datenzeilen enthält. Wenn dies nicht geschieht, führt dies zu unvorhersehbaren Ergebnissen und kann sogar zu einem Treiberabsturz führen.

Anforderungen

Anforderung Wert
Zielplattform Desktop
Kopfzeile wiamdef.h (einschließlich Wiamdef.h)
Bibliothek Wiaservc.lib
DLL Wiaservc.dll

Weitere Informationen

WIAS_DOWN_SAMPLE_INFO