 C#
- Redimensionando Imagens
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
 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: