Eu configurei e usei com sucesso o scanimage
(com hplip) e descobri que ele funciona de forma consistente e confiável.
Algum tempo atrás eu construí um invólucro de varredura automática simples que iria adquirir uma imagem, exibir a varredura na tela para eu avaliar, esperar alguns segundos para eu interromper a execução se a varredura falhasse, uma vez que eu terminasse, etc, em seguida, passar para a próxima imagem.
Esse sistema (incrivelmente simples) tinha uma peculiaridade: scanimage
só emitia meu JPG ou TIFF solicitado para o disco no final da varredura, depois de mastigar o tempo da CPU por 3 ou 4 segundos. Isso significava que eu tinha que esperar que a varredura fosse concluída antes que ela fosse exibida na tela, então eu sempre estaria olhando para a varredura anterior com sucesso enquanto esperava pela atual, que era sempre uma pegadinha de UI / UX.
Eu gostaria de exibir os dados da varredura em "tempo real", não quando a varredura está completa, meu scanner envia dados para o meu computador progressivamente, e o SANE armazena os dados em algum lugar da memória quando eles são recebidos. Como obtenho esses dados de imagem bruta à medida que são recebidos? Eu também preciso saber como decodificá-lo para exibição (baixa resolução / reduzida).