VB .NET - Alterando a resolução e as dimensões de imagens
Neste artigo vou mostrar como alterar a resolução e as dimensões de imagens usando a linguagem VB .NET. |
Quando tratamos com resolução de imagens em geral estamos falando de pontos
por polegada ou DPI onde
Pontos por polegada
(DPI ou dpi) [1] é uma medida de impressão espacial ou densidade de pontos
de vídeo, em particular o número de pontos individuais que podem ser
colocados em uma linha no espaço de 2,5 cm (1 polegada).
Como os monitores não têm pontos, mas têm pixels; O conceito estreitamente relacionado para monitores e imagens é pixels por polegada ou PPI. Em geral os computadores trabalham com trabalham com imagens com uma resolução de 96 pixels por polegada.
Já a impressão de imagens trabalha com uma resolução maior , como algo em torno de 300 DPI.
Neste artigo vamos implementar a alteração da resolução e do tamanho de imagens na linguagem VB .NET.
Recursos Usados :
Criando o projeto Windows Forms
Abra o VS 2017 Community e crie um novo projeto (File-> New Project) usando a linguagem Visual Basic e o template Windows Classic Desktop ->Windows Forms Application(.NET Framework)
Informe um nome a seu gosto. Eu vou usar o nome vbn_alteraResolucaoImagem
A seguir inclua os seguintes controles no formulário form1.vb a partir da ToolBox:
MenuStrip - mnu1
OpenFileDialog - ofd1
SaveFileDialog - svd1
1 Picturebox - picImagem , SizeMode = Zoom e BorderStyel = FixedSingle
4 TextBox - txtDpiX, txtDpiY, txtLargura e txtAltura
Defina no MenuStrip um menu com as opções : Abrir, Salvar (Enabled=false) e Sair
Disponha os controles conforme mostra a imagem da figura abaixo:
Implementando o código no formulário
Vamos agora definir o código no formulário Form1.vb começando com a declaração dos namespaces:
Imports System.Drawing.Imaging
Imports System.IO
Imports System.Media
No início do formulário declare a variável :
Dim OriginalBitmap As Bitmap = Nothing
No evento Click da opção do menu Abrir inclua o código abaixo:
Private Sub AbrirToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles AbrirToolStripMenuItem.Click
If ofd1.ShowDialog() = DialogResult.OK Then
OriginalBitmap = New Bitmap(ofd1.nomeArquivo)
picImagem.Image = OriginalBitmap
Using gr As Graphics = Graphics.FromImage(OriginalBitmap)
txtDpiX.Text = gr.DpiX.ToString()
txtDpiY.Text = gr.DpiY.ToString()
End Using
txtLargura.Text = OriginalBitmap.Width.ToString()
txtAltura.Text = OriginalBitmap.Height.ToString()
SalvarToolStripMenuItem.Enabled = True
End If
End Sub
|
Neste código abrimos um arquivo de imagem e criamos um objeto Graphics associado ao bitmap usando suas propriedades DpiX e DpiY para exibir a resolução da imagem original. Exibimos também a largura e altura do bitmap.
No evento Click da opção Salvar defina o código a seguir:
Private Sub SalvarToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles SalvarToolStripMenuItem.Click
If svd1.ShowDialog() = DialogResult.OK Then
Dim larguraAnterior As Integer = OriginalBitmap.Width
Dim alturaAnterior As Integer = OriginalBitmap.Height
Dim novaLargura As Integer = Integer.Parse(txtLargura.Text)
Dim novaAltura As Integer = Integer.Parse(txtAltura.Text)
Using bm As New Bitmap(novaLargura, novaAltura)
Dim points As Point() = {New Point(0, 0), New Point(novaLargura, 0), New Point(0, novaAltura)}
Using gr As Graphics = Graphics.FromImage(bm)
gr.DrawImage(OriginalBitmap, points)
End Using
Dim dpix As Single = Single.Parse(txtDpiX.Text)
Dim dpiy As Single = Single.Parse(txtDpiY.Text)
bm.SetResolution(dpix, dpiy)
SalvarImagem(bm, svd1.FileName)
SystemSounds.Beep.Play()
End Using
End If
End Sub
|
Neste código exibimos uma caixa de diálogo Salvar arquivo. Se você selecionar um arquivo e clicar em Salvar, o código lê os novos valores nas caixas de texto. Em seguida, cria um bitmap que tem as novas dimensões. Ele cria um objeto Graphics associado e usa seu método SetResolution para definir a resolução do novo bitmap.
Finalmente, o método salva o novo bitmap chamando o método SalvarImagem().
O método SetResolution é usado para definir a resolução desejada em um bitmap recém-criado. Alterar a resolução da imagem não altera seu tamanho físico.
Agora crie o método SalvarImagem usando o seguinte código :
Public Sub SalvarImagem(imagem As Image, nomeArquivo As String)
Dim extensao As String = Path.GetExtension(nomeArquivo)
Select Case extensao.ToLower()
Case ".bmp"
imagem.Save(nomeArquivo, ImageFormat.Bmp)
Exit Select
Case ".exif"
imagem.Save(nomeArquivo, ImageFormat.Exif)
Exit Select
Case ".gif"
imagem.Save(nomeArquivo, ImageFormat.Gif)
Exit Select
Case ".jpg", ".jpeg"
imagem.Save(nomeArquivo, ImageFormat.Jpeg)
Exit Select
Case ".png"
imagem.Save(nomeArquivo, ImageFormat.Png)
Exit Select
Case ".tif", ".tiff"
imagem.Save(nomeArquivo, ImageFormat.Tiff)
Exit Select
Case Else
Throw New NotSupportedException(Convert.ToString("Extensão de arquivo desconhecida...") & extensao)
End Select
End Sub
|
Neste código usamos o método Image.Save() para salvar a imagem para um arquivo especificado no formato definido.
Finalmente no evento Click da opção de menu Sair digite o código a seguir:
Private Sub SairToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles SairToolStripMenuItem.Click
If (MessageBox.Show("Deseja encerrar o programa ?", "Encerrar", MessageBoxButtons.YesNo) = DialogResult.Yes) Then
Application.Exit()
End If
End Sub
|
Executando o projeto iremos obter o resultado abaixo:
Na primeira figura temos a imagem e a resolução e a largura e altura originais. A seguir alteremos a resolução e a largura e altura. Depois abrindo a imagem alterada vemos o resultado.
Pegue o código do projeto aqui : vbn_alteraResolucaoImagem.zip
(Disse Jesus) Na verdade, na verdade vos digo que aquele que crê em mim tem a vida eterna. João 6:47
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
|
Gostou ?
Compartilhe no Facebook
Compartilhe no Twitter
Referências: