C#
- Redimensionando Imagens
Neste tutorial eu vou mostrar como podemos redimensionar imagens usando a linguagem C#.
Abra o Visual C# 2010 Express Edition e no menu File clique em New Project selecionando o template Windows Forms Application e informando o nome RedimensionandoImagens;
Vamos definir uma interface com o usuário no formulário form1.cs usando os controles Button, TextBox, Label, NumeriUpDown e PictureBox, conforme o leiaute abaixo:
![]() |
Controles usados no
formulário form1.cs:
|
Em seguida vamos definir o código do formulário.
Para iniciar vamos declarar os namespaces usados:
using
System;
using System.Drawing;
using System.Windows.Forms;
using System.Drawing.Imaging;
using System.Drawing.Drawing2D;
1- No evento Click do botão Procurar Imagem que abre a caixa de diálogo OpenFileDialog para selecionar uma imagem e exibe a imagem no controle PictureBox exibindo suas dimensões originais;
private void btnProcurarImagem_Click(object sender, EventArgs e)
{
OpenFileDialog abrirImagem = new OpenFileDialog();
DialogResult resultado = abrirImagem.ShowDialog();
if (resultado == DialogResult.OK)
{
//Carrega imagem no picture box e define a propriedade size da imagem como normal
picImagem.Load(abrirImagem.FileName);
picImagem.SizeMode = PictureBoxSizeMode.Normal;
//Armazena o local da origem no textbox.
txtOrigemImagem.Text = abrirImagem.FileName;
//Retorna a altura e lagurada da imagem e armazena na varivavel tamanhoOriginalImagem
int imgWidth = picImagem.Image.Width;
int imgHeight = picImagem.Image.Height;
tamanhoOriginalImagem = new Size(imgWidth, imgHeight);
string imgSize = "Width " + imgWidth + " px Height " + imgHeight + " px";
lblTamanhoOriginal.Text = imgSize;
}
}
|
2- Código do método EscalaPercentual que redimensiona a imagem e retorna um objeto Imagem que é redimensionado pelo percentual definido;
static Image EscalaPercentual(Image imgFoto, int Percentual)
{
float nPorcentagem = ((float)Percentual / 100);
int fonteLargura = imgFoto.Width; //armazena a largura original da imagem origem
int fonteAltura = imgFoto.Height; //armazena a altura original da imagem origem
int origemX = 0; //eixo x da imagem origem
int origemY = 0; //eixo y da imagem origem
int destX = 0; //eixo x da imagem destino
int destY = 0; //eixo y da imagem destino
//Calcula a altura e largura da imagem redimensionada
int destWidth = (int)(fonteLargura * nPorcentagem);
int destHeight = (int)(fonteAltura * nPorcentagem);
//Cria um novo objeto bitmap
Bitmap bmImagem = new Bitmap(destWidth, destHeight, PixelFormat.Format24bppRgb);
//Define a resolu~ção do bitmap.
bmImagem.SetResolution(imgFoto.HorizontalResolution,imgFoto.VerticalResolution);
//Crima um objeto graphics e defina a qualidade
Graphics grImagem = Graphics.FromImage(bmImagem);
grImagem.InterpolationMode = InterpolationMode.HighQualityBicubic;
//Desenha a imge usando o método DrawImage() da classe grafica
grImagem.DrawImage(imgFoto,
new Rectangle(destX, destY, destWidth, destHeight),
new Rectangle(origemX, origemY, fonteLargura, fonteAltura),
GraphicsUnit.Pixel);
grImagem.Dispose(); //libera o objeto grafico
return bmImagem;
}
|
3- O código do botão Redimensionar Imagem chama o método EscalaPercentual e redefine o tamanho da imagem exibindo-a no controle PictureBox;
private void btnOK_Click(object sender, EventArgs e)
{
//Chama o método EscalaPercentual que retorna a imagem
//redimensionada e armazena-a em uma varivael do tipo Image
Image imagemEscalonada = EscalaPercentual(picImagem.Image, (int)nupImagem.Value);
//Exibe a imagem no picture box.
picImagem.Image = imagemEscalonada;
//Retorna a lagura e altura da imagem
string imgSize = "Width " + imagemEscalonada.Width + " px Height " + imagemEscalonada.Height + " px";
lblNovoTamanhoImagem.Text = imgSize;
}
|
4- Código do botão Salvar Imagem que abre uma caixa de diálogo SaveFileDialog e salva a imagem;
private void btnSalvarImagem_Click(object sender, EventArgs e)
{
SaveFileDialog sfd = new SaveFileDialog(); //Cria um objeto SaveFileDialog
sfd.DefaultExt = "jpeg"; //Define a extensão padrão
if (DialogResult.OK == sfd.ShowDialog())
{
string nomeArquivo = sfd.FileName; //Armazena o nome da arquivo na varivael
txtDestinoImagem.Text = nomeArquivo; //Exibe o local de destino no TextBox
Bitmap imgImage = new Bitmap(picImagem.Image); //Cria um objeto do tipo Bitmap
imgImage.Save(nomeArquivo, ImageFormat.Jpeg); //Chama o método Save da classe Bitmap
}
}
|
Executando o projeto iremos obter:
![]() |
A imagem original selecionada |
![]() |
A nova imagem redimensionada e salva |
Pegue a primeira parte do
projeto completo aqui:
RedimensionandoImagens.zip
Rom 3:21
Mas agora, sem lei, tem-se manifestado a justiça de Deus, que é atestada pela lei e pelos profetas;Referências: