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: