Partager via


wiasDownSampleBuffer, fonction (wiamdef.h)

La fonction wiasDownSampleBuffer prend en mémoire tampon les données de pixel alignées sur DWORD et les réduit (produit des données d’image de résolution inférieure) à la taille et à la résolution spécifiées.

Syntaxe

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

Paramètres

lFlags

Spécifie un ensemble d’indicateurs qui déterminent le comportement de cette fonction. Actuellement, seul l’indicateur suivant est défini.

Drapeau Signification
WIAS_GET_DOWNSAMPLED_SIZE_ONLY Ne copiez pas les données en panne dans la mémoire tampon de destination. Définissez plutôt les membres suivants de la structure WIAS_DOWN_SAMPLE_INFO : ulDownSampledHeight, ulDownSampleWidth, ulAlignedHeight, ulAlignedWidth.

[in, out] pInfo

Pointeur vers la structure WIAS_DOWN_SAMPLE_INFO qui contient toutes les informations nécessaires à l’opération d’échantillonnage descendant.

Valeur de retour

En cas de réussite, la fonction retourne S_OK.

Si la fonction échoue, elle retourne une erreur COM standard ou l’un des codes d’erreur WIA .

Remarques

La fonction wiasDownSampleBuffer peut être utilisée de l’une des deux manières suivantes :

  • L’appelant spécifie la largeur et la hauteur downsampled (autrement dit, sortie) en définissant les ulDownSampledWidth et ulDownSampledHeight membres de la structure WIA_DOWN_SAMPLE_INFO.

  • L’appelant définit les ulDownSampledWidth et ulDownSampledHeight membres de la structure WIA_DOWN_SAMPLE_INFO sur zéro, indiquant que la fonction doit choisir la largeur et la hauteur de sortie.

Pour voir quelles valeurs de largeur et de hauteur de sortie la fonction choisit, appelez cette fonction avec le paramètre lFlags défini sur WIAS_GET_DOWNSAMPLED_SIZE_ONLY. Au retour, les membres ulDownSampledWidth et ulDownSampledHeight sont définis sur leurs nouvelles valeurs. Aucun échantillonnage inférieur n’est effectué dans ce cas.

L’appelant de cette fonction est requis pour remplir les membres suivants de la structure WIA_DOWN_SAMPLE_INFO :

  • ulOriginalWidth

  • ulOriginal Height

  • ulBitsPerPixel

  • ulXRes

  • ulYRes

  • pSrcBuffer

La fonction wiasDownSampleBuffer s’attend à ce que ulBitsPerPixel soit de 1, 8 ou 24, correspondant aux données 1, 8 et 24 bits par pixel. L’appelant peut également spécifier la taille des données sous-échantillonnée en remplissant les membres de la structure WIA_DOWN_SAMPLE_INFO suivants : - ulDownSampledWidthulDownSampledHeight

Si la mémoire tampon qui reçoit les données en panne a déjà été allouée, l’appelant doit renseigner ces membres de structure WIA_DOWN_SAMPLE_INFO :

  • ulDestBufSize

  • ulSrcBufSize

  • pDestBuffer

Si l’appelant définit pDestBuffer sur NULL, la mémoire tampon de destination est allouée par le service WIA. Lors du retour de cette fonction, pDestBuffer pointe vers la mémoire tampon de destination. L’appelant est chargé de libérer cette mémoire lorsque l’opération est terminée. Pour ce faire, appelez CoTaskMemFree sur la mémoire tampon.

Étant donné que cette fonction n’est pas en mesure de produire des lignes de sortie partielles, le nombre de lignes d’analyse dans la mémoire tampon d’entrée doit être un multiple entier du facteur de mise à l’échelle. Par exemple, supposons que la mémoire tampon d’entrée contient une image échantillonné à 600 ppp, que vous avez l’intention de descendre dans une image de 50 ppp équivalente. Dans ce cas, vous effectuez un scale-down de l’image d’origine par un facteur de 12 (car 600 / 50 = 12). Cela signifie que la fonction doit recevoir 12 lignes d’entrée pour chaque ligne de sortie qu’elle produit.

Si l’image d’origine a une résolution deR dans ppp, et doit être réduit à une image avec une résolution de R ppp, le facteur de scale-down est Rdans / Rsortie, et le nombre de lignes dans la mémoire tampon d’entrée doit être un multiple de Rdans / R. Si la tête d’analyse atteint la dernière bande de l’image d’origine et qu’il y a trop peu de lignes d’analyse dans la mémoire tampon d’entrée pour produire une ligne de sortie, remplissez la mémoire tampon d’entrée afin qu’elle contienne le nombre requis de lignes de données. Le fait de ne pas le faire provoque des résultats imprévisibles et peut même entraîner un accident du conducteur.

Exigences

Exigence Valeur
plateforme cible Bureau
d’en-tête wiamdef.h (include Wiamdef.h)
bibliothèque Wiaservc.lib
DLL Wiaservc.dll

Voir aussi

WIAS_DOWN_SAMPLE_INFO