Digitalizando Imagens com o Visual Basic
Tenho encontrado muitas perguntas relacionadas ao tratamento de imagens e o Visual Basic. Uma das mais frequentes refere-se a digitalização de imagens no VB . É possível ? Como fazer ? etc..
Resolvi então neste artigo abordar o tema - digitalizando imagens com o VB.
A primeira coisa que deve ficar bem clara é que não é o Visual Basic nem a aplicação Visual Basic que vai fazer a digitalização da imagem. A aplicação VB irá abrir o digitalizador do scanner que estiver instalado no seu computador para fazer este serviço. A aplicação em si irá ajudar a tornar as tarefas relacionadas com o processo mais fáceis de serem executadas.
Para obter ter a funcionalidade de tratar imagens digitalizadas vamos ter que usar componentes prontos que irão realizar as tarefas pertinentes. Existe no Visual Basic os componentes para controle de digitalização de imagens Kodak que você deverá incluir no seu projeto. Os componentes existentes são :
Para
incluir estes componentes no seu projeto faça o seguinte
:
Na verdade não iremos usar o componente : Controle de miniaturas de imagens Kodak Após a inclusão os componentes irão aparecer na barra de ferramentas conforme figura abaixo: |
Vamos inciar o Visual Basic e criar um projeto do tipo StandardEXE ; no formulário principal inclua os componentes conforme acima e ainda os seguintes controles:
|
A próxima etapa será definir as propriedades dos componentes : ImgScan , ImgEdit e ImgAdmin para que possamos por aplicação para funcionar.
A janela de propriedades customizadas para os controles ImgScan e ImgEdit estão exibidas abaixo:
ImgScan | ImgEdit |
A seguir algumas das propriedades definidas para ImgScan :
Nome da Propriedade | Descrição da propriedade |
DestImageControl | Define o controle para o qual a imagem digitalizada será enviada. (Geralmente um controle ImgEdit) |
FileType | Define o tipo de imagem que deverá ser criada. Temos : TIFF , AWO e BMP |
ScanTo | Define o destino da imagem digitializada (geralmente um controle ImgEdit vinculado) |
ShowSetupBeforeScan | Define se o controle de digitalização do scanner deve ser usado ou não. True abre o controle do scanner e False a digitalização é feita de imediato |
StopScanBox | Define se a caixa de diálogo deve ser aberta permitindo cancelar o processo. |
Zoom | Determina a escala de visualização da imagem. |
O controle ImgEdit trabalha de certa forma vinculado ao controle anterior, e , as propriedades definidas são:
Nome da Propriedade | Descrição da propriedade |
Image | Retorna o tipo de imagem que esta carregada.(So pode salvar nos formatos:TIFF , AWO e BMP) |
FileType | Retorna/Define o nome e o caminho do arquivo que esta no controle. |
ImageDisplayed | Informa se o controle possui uma imagem carregada. |
ImageModified | Informa se a imagem do controle foi modificada |
Page | Informa qual página do arquivo de imagem esta sendo acessada |
PageCount | Informa quantas páginas o arquivo de imagens possui. |
ScrollBars | Determina a escala de visualização da imagem. |
O controle ImgAdmin tem as seguintes propriedades definidas :
Nome da Propriedade | Descrição da propriedade |
CancelError | Retorna/Define um erro , se o usuário pressionar Cancelar na janela de diálogo |
DefaultEx | Retorna ou define a extensão padrão dos arquivos que será exibida. |
DialogTitle | Define o título da janela de diálogo |
FileType | Retorna o tipo de formato do arquivo da imagem |
Image | Define o nome e caminho da imagem selecionada |
InitDir | Retorna/Define a pasta padrão para salvar/abrir os arquivos |
Agora vamos começar a codificar as funcionalidades da aplicação.
Antes vamos definir um menu simples usando o Editor de Menus(CTRL+E). Configure as opções do Menu conforme abaixo:
1- Na seção General Declarations do formulário vamos definir a variável que irá receber o nome do arquivo:
Option
Explicit
Dim strNomeArquivo As String
2- No evento Click do botão - Obter Imagem - digite o código a seguir:
Private
Sub cmdObterImagem_Click() On Error GoTo trata_scan_erro ImgScan1.StartScan Exit Sub trata_erro_scan: If Err.Number = 1116 Then MsgBox " Controle do Scanner não localizado . ", vbInformation, "Digitaliza Imagens" ElseIf Err.Number = 1101 Then MsgBox " Falha no Scanner ", vbInformation, "Digitaliza Imagens" ElseIf Err.nubmer = 1117 Then MsgBox " Sem fonte de dados TWAIN ", vbInformation, "Digitaliza Imagens" End If End Sub |
Se você ficou abismado pela simplicidade do código , é isto mesmo , não houve erros. No código acima eu apenas inicializei o processo de digitalização da imagem(ImgScan1.StartScan) usando controle de digitalização do scanner (ele será aberto e em seguida a imagem será digitalizada)
O código para tratamento de erro verifica se há scanner e seu software instalados e falhas no dispositivo.
Agora o código do botão - Abrir Imagem :
Private
Sub cmdAbriImagem_Click() On Error GoTo trata_abrir_erro ImgAdmin1.DialogTitle = "Abrindo arquivo de imagem..." ImgAdmin1.ShowFileDialog OpenDlg strNomeArquivo = ImgAdmin1.Image ImgEdit1.Image = strNomeArquivo ImgEdit1.Display Exit Sub trata_abrir_erro: MsgBox " Ocorreu um erro durante abertura da imagem. ", vbCritical, "Abrir Imagem" End Sub |
O código acima também não tem segredos. Funciona assim:
Ao lado a janela de diálogo que será aberta. |
Vamos agora para o código relacionado ao evento Click do botão - Salvar Imagem :
Private
Sub cmdSalvarImagem_Click() On Error GoTo trata_erro_Salvar ImgAdmin1.DialogTitle = "Salvar Imagem como : " ImgAdmin1.ShowFileDialog SaveDlg strNomeArquivo = ImgAdmin1.imge ImgEdit1.SaveAs strNomeArquivo trata_erro_Salvar If Err.Number = 1178 Then MsgBox " Formato de arquivo não suportado ", vbCritical, "Salva Imagem" End If End Sub |
Pronto ! Você acabou de implementar um projeto com tratamento de imagens para scanner no VB.
Existem muitas coisas que você pode melhorar incrementando ainda mais o projeto mas o básico já esta pronto. Uma detalhe que poderia causar frustração é que os formatos suportados para salvar as imagens são apenas três : TIFF , BMP e AWD.
Eu sei , é apenas Visual Basic , mas eu gosto !
José Carlos Macoratti