C# - Convertendo Imagens
Neste artigo veremos como converter imagens entre os formatos suportados em uma aplicação Windows Forms usando a linguagem C#.
A teoria sobre o assunto pode ser consultada no link : http://msdn.microsoft.com/en-us/library/system.drawing.image.aspx
A base de todo o processo é a classe Image que é uma classe base abstrata que fornece funcionalidade para as classes descendentes Bitmap e Metafile.
Recursos usados
Criando o Projeto
Abra o Visual Studio 2012 Express for desktop e clique em New Project;
Selecione o template Visual C# -> Windows -> Windows Forms Application e informe o nome ConversorImagens;
A partir da ToolBox arraste e solte os seguintes controles no formulário form1.cs:
disponha os controles no formulário conforme o leiaute abaixo:
Vamos iniciar definindo os namespaces usados no formulário form1:
using
System;
using System.Drawing;
using System.Windows.Forms;
using System.Security;
using System.Drawing.Imaging;
A classe Imaging permite realizar a conversão entre os tipos de formatos de imagens suportados.
O namespace System.Drawing.Imaging fornece funcionalidades avançadas de imagem GDI+.
A funcionalidade básica de elementos gráficos é fornecida pelo namespace System.Drawing.
No evento Load do formulário temos o código a seguir:
private void Form1_Load(object sender, EventArgs e) { AjustaRadioButtons(false); btnConverterImagem.Enabled = false; } |
A rotina AjustaRadioButtons() irá habilitar ou desabilitar os controles radiobuttons usados no formulário conforme o parâmetro passado:
private void AjustaRadioButtons(bool flag) { foreach (Control cntrl in Controls) { if (cntrl.GetType() == typeof(RadioButton)) { cntrl.Enabled = flag; } } } |
No evento Click do botão de comando Carregar Imagem temos o código a seguir:
prprivate void btnCarregaImagem_Click(object sender, EventArgs e) { ofd1.CheckFileExists = true; ofd1.CheckPathExists = true; ofd1.FilterIndex = 2; ofd1.RestoreDirectory = true; ofd1.ReadOnlyChecked = true; ofd1.ShowReadOnly = true; // ofd1.Filter = "*.jpg|*.jpg|*.bmp|*.bmp|*.gif|*.gif|*.png|*.png"; if (ofd1.ShowDialog() == DialogResult.OK) { try { picImagem.Image = Image.FromFile(ofd1.FileName); AjustaRadioButtons(true); btnConverterImagem.Enabled = true; } catch (SecurityException ex) { // O usuário não possui permissão para ler arquivos MessageBox.Show("Erro de segurança Contate o administrador de segurança da rede.\n\n" + "Mensagem : " + ex.Message + "\n\n" + "Detalhes (enviar ao suporte):\n\n" + ex.StackTrace); } catch (Exception ex) { // Não pode carregar a imagem (problemas de permissão) MessageBox.Show("Não é possível exibir a imagem : " + ofd1.FileName + ". Você pode não ter permissão para ler o arquivo , ou " + " ele pode estar corrompido.\n\nErro reportado : " + ex.Message); } } } |
O controle Open File Dialog - ofd1 - irá abrir uma janela para selecionar um arquivo. Abaixo temos as principais propriedades deste controle:
1- InitialDirectory
- Representa o diretório a ser exibido quando a janela de
diálogo aparecer pela primeira vez.
Ex:
openFileDialog1.InitialDirectory = @"C:\";
Se a propriedade RestoreDirectory
for definida como True a caixa de diálogo restaura o diretório
atual antes de ser fechada.
Ex:
openFileDialog1.RestoreDirectory = true;
2- Title - Usada para definir ou atribuir um título a janela de diálogo: Ex: openFileDialog1.Title = "Localizar Arquivos";
3- Default Extension - Representa a extensão padrão do arquivo a ser localizado: Ex: openFileDialog1.DefaultExt = "txt";
4- Filter
- Representa o filtro da janela de diálogo que será usado para
filtrar o tipo de arquivos a serem
carregados durante a localização. O exemplo abaixo exibe
somente arquivos com extensão .txt:
Ex:
openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files
(*.*)|*.*";
5- FilterIndex - Representa o índice do filtro atualmente selecionado na janela de diálogo: Ex:openFileDialog1.FilterIndex = 2;
6- ChecFileExists -
Indica se a janela de diálogo exibirá um aviso se o usuário
especificar um nome de arquivo inexistente;
Ex:
openFileDialog1.CheckFileExists = true;
7- CheckPathExists -
Indica se a janela de diálogo exibirá um aviso se o usuário
especificar um caminho inexistente;
Ex:
openFileDialog1.CheckPathExists = true;
8- FileName - Representa o nome do arquivo selecionado na janela de diálogo. Ex: textBox1.Text = openFileDialog1.FileName;
9- MultiSelect
- Se esta propriedade for definida como True pode-se selecionar
mais de um arquivo e FileNames representará
todos
os arquivos selecionados. Neste caso deve-se usar um laço
foreach para exibir os arquivos selecionados.
this.openFileDialog1.Multiselect
= true;
foreach (String file in
openFileDialog1.FileNames)
{
MessageBox.Show(file); }
10- ReadyOnlyChecked - Indica se a caixa de verificação estará selecionada: Ex: openFileDialog1.ReadOnlyChecked = true;
11- ShowReadyOnly - Indica se a caixa de verificação read-only estará disponível ou não. Ex: openFileDialog1.ReadOnlyChecked = true;
Após carregar a imagem e exibi-la no controle PictureBox - picImagem - basta selecionar o tipo de formato desejado para converter a imagem e clicar no botão - Converter Imagem - que no seu evento Click possui o seguinte código:
private void btnConverterImagem_Click(object sender, EventArgs e) { String msg = ""; Image imagemConvertida = picImagem.Image; sfd1.Filter = filtroAtribuicaoExtensao(); if (sfd1.ShowDialog() == System.Windows.Forms.DialogResult.OK) { if (rdbJPG.Checked) { imagemConvertida.Save(sfd1.FileName, ImageFormat.Jpeg); msg="Conversão realizada com sucesso."; } else if (rdbGIF.Checked) { imagemConvertida.Save(sfd1.FileName, ImageFormat.Gif); msg="Conversão realizada com sucesso."; } else if (rdbPNG.Checked) { imagemConvertida.Save(sfd1.FileName, ImageFormat.Png); msg="Conversão realizada com sucesso."; } else if (rdbBMP.Checked) { imagemConvertida.Save(sfd1.FileName, ImageFormat.Bmp); msg="Conversão realizada com sucesso."; } else if (rdbICON.Checked) { imagemConvertida.Save(sfd1.FileName, ImageFormat.Icon); msg="Conversão realizada com sucesso."; } else if (rdbEXIF.Checked) { imagemConvertida.Save(sfd1.FileName, ImageFormat.Exif); msg="Conversão realizada com sucesso."; } MessageBox.Show(msg); } else { MessageBox.Show("A imagem não é vlida"); } } |
Executando o projeto e selecionando um imagem a partir da caixa de diálogo teremos o resultado abaixo:
Ao clicar no botão Converter Imagem a caixa de diálogo Salvar arquivo irá solicitar o nome do arquivo e o local onde desejamos salvar a nova imagem.
Clicando no botão Salvar.
Teremos a conversão completada com sucesso.
Pegue o projeto completo aqui: ConversorImagens.zip
Veja os
Destaques e novidades do SUPER DVD Visual Basic 2013
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
|
Mat 6:7 E, orando, não useis de vãs repetições, como os gentios; porque pensam que pelo seu muito falar serão ouvidos.
Mat 6:8 Não vos assemelheis, pois, a eles; porque vosso Pai sabe o que vos é necessário, antes de vós lho pedirdes.
Gostou ? Compartilhe no Facebook Compartilhe no Twitter
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
C# - Armazenando e Recuperando Imagens do SQL ... - Macoratti.net