wiasDownSampleBuffer-Funktion (wiamdef.h)

Die wiasDownSampleBuffer--Funktion übernimmt einen Puffer von DWORD-ausgerichteten Pixeldaten 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.

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

[in, out] pInfo

Zeigen Sie auf die WIAS_DOWN_SAMPLE_INFO Struktur, die alle informationen enthält, die für den Downsampling-Vorgang erforderlich sind.

Rückgabewert

Bei Erfolg gibt die Funktion S_OK zurück.

Wenn die Funktion fehlschlägt, wird ein STANDARDMÄßIGer COM-Fehler oder eine der WIA-Fehlercodeszurückgegeben.

Bemerkungen

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

  • Der Aufrufer gibt die Breite und Höhe des Downsampled (d. h. ausgabe) an, indem die ulDownSampledWidth- und ulDownSampledHeight Member der WIA_DOWN_SAMPLE_INFO-Struktur festgelegt werden.

  • Der Aufrufer legt die ulDownSampledWidth und ulDownSampledHeight Member der WIA_DOWN_SAMPLE_INFO-Struktur auf Null 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 mit dem lFlags Parameter auf WIAS_GET_DOWNSAMPLED_SIZE_ONLYfestgelegt. Beim Zurückgeben werden die ulDownSampledWidth- und ulDownSampledHeight--Member auf ihre neuen Werte festgelegt. In diesem Fall wird kein Downsampling ausgeführt.

Der Aufrufer dieser Funktion ist erforderlich, um die folgenden Member der WIA_DOWN_SAMPLE_INFO Struktur auszufüllen:

  • ulOriginalWidth

  • ulOriginal Height

  • ulBitsPerPixel-

  • ulXRes-

  • ulYRes-

  • pSrcBuffer-

Die wiasDownSampleBuffer--Funktion erwartet, dass ulBitsPerPixel- 1, 8 oder 24 entsprechen, die 1-, 8- und 24-Bit-pro-Pixel-Daten entsprechen. Der Aufrufer kann auch die Größe der downsampled-Daten angeben, indem die folgenden WIA_DOWN_SAMPLE_INFO Strukturmmber ausgefüllt werden: - ulDownSampledWidthulDownSampledHeight

Wenn der Puffer, der die downsampled-Daten empfängt, bereits zugeordnet wurde, sollte der Aufrufer diese WIA_DOWN_SAMPLE_INFO Strukturmmber ausfüllen:

  • ulDestBufSize

  • ulSrcBufSize

  • pDestBuffer-

Wenn der Aufrufer pDestBuffer auf NULL-festlegt, wird der Zielpuffer vom WIA-Dienst zugewiesen. Wenn Sie von dieser Funktion zurückgeben, pDestBuffer auf den Zielpuffer zeigt. Der Aufrufer ist dafür verantwortlich, diesen Speicher freizugeben, wenn der Vorgang abgeschlossen ist, und führt dies durch Aufrufen CoTaskMemFree für den Puffer aus.

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 600 dpi, das Sie auf ein entsprechendes 50 DPI-Bild herabsetzen möchten. In diesem Fall skalieren Sie das Originalbild um den Faktor 12 (da 600 / 50 = 12). Dies bedeutet, dass die Funktion 12 Eingabezeilen für jede Ausgabezeile empfangen muss, die sie erzeugt.

Wenn das Originalbild eine Auflösung von Rin dpi aufweist und auf ein Bild mit einer Auflösung von R dpi skaliert werden soll, ist der Skalierungsfaktor Rin/ Rout, und die Anzahl der Zeilen im Eingabepuffer sollte ein Vielfaches von Rin /Rsein. Wenn der Scankopf das letzte Band des originalen Bilds erreicht, und es gibt zu wenige Scanzeilen im Eingabepuffer, um eine Ausgabezeile zu erzeugen, legen Sie den Eingabepuffer auf, sodass er die erforderliche Anzahl von Datenzeilen enthält. Dies führt zu unvorhersehbaren Ergebnissen und kann sogar zu einem Treiberabsturz führen.

Anforderungen

Anforderung Wert
Zielplattform- Desktop
Header- wiamdef.h (include Wiamdef.h)
Library Wiaservc.lib
DLL- Wiaservc.dll

Siehe auch

WIAS_DOWN_SAMPLE_INFO