quinta-feira, 1 de maio de 2014

Neste tutorial vamos aprender como converter uma imagem para diversos formatos utilizando a classe System.Drawing.Imaging.ImageFormat que temos no .NET Framework. Ela nos permite salvar uma imagem para um determinado formato. É isso que vamos fazer a partir de um pictureBox.

Primeiramente vamos criar nosso form.


- btnAbrir: Botão com Text = "Abrir Imagem". Abrirá a imagem a ser convertida.
- btnConverter: Botão com Text = "Converter". Ação principal que salva a imagem em um novo formato.
- cboFormato: ComboBox que terá os possíveis formatos para conversão
- picImagem: PictureBox que guardará a imagem a ser convertida.

Vamos programar as ações necessárias para abrirmos a imagem. Evento Click do btnAbrir

// Instancia um novo OpenFileDialog
OpenFileDialog dlgAbrir = new OpenFileDialog();
// Definimos o filtro do Dialog
dlgAbrir.Filter = "Arquivos de Imagem | *.png; *.bmp; *.jpg; *.gif";
// Executa o OpenFileDialog
dlgAbrir.ShowDialog();
 // Pegamos o nome do arquivo selecionado
string nomeArquivo = dlgAbrir.FileName;

// carrega o pictureBox se um arquivo válido foi selecionado
if (nomeArquivo != string.Empty)
{
   picImagem.ImageLocation = nomeArquivo;
   // Ajustamos a imagem ao pictureBox
   picImagem.SizeMode = PictureBoxSizeMode.StretchImage;
}

Note que quando criamos o filtro, usei apenas quatro extensões de arquivos, fique por sua conta explorar a classe e ver quais tipos de arquivos são suportados.

Vamos colocar as extensões dos arquivos suportados dentro do ComboBox. Podemos fazer isso através da caixa de Propriedades, mas por fins educativos, vamos fazer isso através de código!
Dê um duplo clique no formulário e será aberto o evento Load. Adicione o código que preenche o comboBox.

// Adicionamos os itens
cboFormato.Items.Add(".bmp");
cboFormato.Items.Add(".gif");
cboFormato.Items.Add(".jpg");
cboFormato.Items.Add(".png");

// Mudamos o estilo para que o usuário não possa digitar nada
cboFormato.DropDownStyle = ComboBoxStyle.DropDownList;

O DropDownStyle também pode ser alterado visualmente.

Agora o que nos resta é o código principal, que pede ao usuário para selecionar uma pasta e salva a imagem em um novo formato.
Não se esqueça de importar a classe System.Drawing.Imaging.ImageFormat no topo da classe que está programando.

using System.Drawing.Imaging.ImageFormat;

Código do btnConverter:
// Instancia um novo FolderBrowserDialog
FolderBrowserDialog dlgPasta = new FolderBrowserDialog();
// exibe o dialog
dlgPasta.ShowDialog();
 // pega o diretorio selecionado
string diretorio = dlgPasta.SelectedPath;

// verifica se a pasta escolhida é válida
if (diretorio != "") {
// salva a imagem de acordo com o que foi selecionado na comboBox
   if (cboFormato.Text == ".bmp")
       picImagem.Image.Save(diretorio + "\\imagem.bmp", ImageFormat.Bmp);
   else if (cboFormato.Text == ".gif")
       picImagem.Image.Save(diretorio + "\\imagem.gif", ImageFormat.Gif);
   else if (cboFormato.Text == ".jpg")
       picImagem.Image.Save(diretorio + "\\imagem.jpg", ImageFormat.Jpeg);
   else if (cboFormato.Text == ".png")
       picImagem.Image.Save(diretorio + "\\imagem.png", ImageFormat.Png);

// mostra mensagem de sucesso
MessageBox.Show("Imagem convertida com sucesso!");
}

Você pode tratar Exceções  com Try Catch e aprendendo neste artigo  http://programadoronline.blogspot.com.br/2012/08/tratando-erros-com-try-catch-em-c.html

O resultado final é esse:

Imagem carregada:


Seleção de alguns dos formatos disponíveis.


Procurar a pasta para salvar a imagem:


Imagem convertida com sucesso!



É isso aí. Abraços e até a próxima.

Categories: ,

0 comentários:

Postar um comentário