Função wiasDownSampleBuffer (wiamdef.h)
A função wiasDownSampleBuffer usa um buffer de dados de pixel alinhados ao DWORD e os reduz (produz dados de imagem de resolução inferior) para o tamanho e a resolução especificados.
Sintaxe
HRESULT wiasDownSampleBuffer(
LONG lFlags,
[in, out] WIAS_DOWN_SAMPLE_INFO *pInfo
);
Parâmetros
lFlags
Especifica um conjunto de sinalizadores que determinam o comportamento dessa função. Atualmente, somente o sinalizador a seguir é definido.
Bandeira | Significado |
---|---|
WIAS_GET_DOWNSAMPLED_SIZE_ONLY | Não copie os dados de downsampled para o buffer de destino. Em vez disso, defina os seguintes membros da estrutura WIAS_DOWN_SAMPLE_INFO: ulDownSampledHeight, ulDownSampleWidth, ulAlignedHeight, ulAlignedWidth. |
[in, out] pInfo
Ponteiro para a estrutura WIAS_DOWN_SAMPLE_INFO que contém todas as informações necessárias para a operação de downsampling.
Valor de retorno
Com êxito, a função retorna S_OK.
Se a função falhar, ela retornará um erro COM padrão ou um dos códigos de erro wia .
Observações
A função wiasDownSampleBuffer pode ser usada de duas maneiras a seguir:
O chamador especifica a largura e a altura de downsampled (ou seja, saída) definindo os membros ulDownSampledWidth e ulDownSampledHeight membros da estrutura WIA_DOWN_SAMPLE_INFO.
O chamador define os ulDownSampledWidth e ulDownSampledHeight membros da estrutura WIA_DOWN_SAMPLE_INFO como zero, indicando que a função deve escolher a largura e a altura da saída.
Para ver quais valores de largura e altura de saída a função escolhe, chame essa função com o parâmetro lFlags definido como WIAS_GET_DOWNSAMPLED_SIZE_ONLY. No retorno, os membros ulDownSampledWidth e ulDownSampledHeight são definidos como seus novos valores. Nenhum downsampling é executado nesse caso.
O chamador dessa função é necessário para preencher os seguintes membros da estrutura de WIA_DOWN_SAMPLE_INFO:
ulOriginalWidth
ulOriginal Height
ulBitsPerPixel
ulXRes
ulYRes
pSrcBuffer
A função wiasDownSampleBuffer espera que ulBitsPerPixel seja 1, 8 ou 24, correspondente a dados de 1, 8 e 24 bits por pixel. O chamador também pode especificar o tamanho dos dados reduzidos preenchendo os seguintes membros da estrutura WIA_DOWN_SAMPLE_INFO: - ulDownSampledWidthulDownSampledHeight
Se o buffer que recebe os dados de downsampled já tiver sido alocado, o chamador deverá preencher estes membros da estrutura WIA_DOWN_SAMPLE_INFO:
ulDestBufSize
ulSrcBufSize
pDestBuffer
Se o chamador definir pDestBuffer para NULL, o buffer de destino será alocado pelo serviço WIA. Ao retornar dessa função, pDestBuffer aponta para o buffer de destino. O chamador é responsável por liberar essa memória quando a operação é concluída e faz isso chamando CoTaskMemFree no buffer.
Como essa função não é capaz de produzir linhas de saída parciais, o número de linhas de verificação no buffer de entrada deve ser um múltiplo inteiro do fator de dimensionamento. Por exemplo, suponha que o buffer de entrada contenha uma imagem amostrada em 600 dpi, que você pretende reduzir para uma imagem de 50 dpi equivalente. Nesse caso, você está reduzindo verticalmente a imagem original por um fator de 12 (porque 600 / 50 = 12). Isso significa que a função deve receber 12 linhas de entrada para cada linha de saída que produz.
Se a imagem original tiver uma resolução de Rem dpi, e deve ser reduzido para uma imagem com uma resolução de R dpi, o fator de redução é Rem/Re o número de linhas no buffer de entrada deve ser um múltiplo de Rem/R. Se a cabeça de verificação atingir a última faixa da imagem original e houver poucas linhas de verificação no buffer de entrada para produzir uma linha de saída, coloque o buffer de entrada para que ele contenha o número necessário de linhas de dados. A falha ao fazer isso causa resultados imprevisíveis e pode até resultar em um acidente de motorista.
Requisitos
Requisito | Valor |
---|---|
da Plataforma de Destino |
Área de trabalho |
cabeçalho | wiamdef.h (inclua Wiamdef.h) |
biblioteca | Wiaservc.lib |
de DLL |
Wiaservc.dll |