Diminuindo fotos automaticamente

10/13/2007 8:54:00 PM By Felipe Pessoto

Criei esse programa pra diminuir algumas fotos de forma automatica. As vezes deixamos a câmera digital no modo com mais alta resolução e isso vai consumindo o HD. No exemplo iremos diminuir a foto pra largura ou altura(o que for maior) de 640px.

Vamos precisar de um Button, um CheckBox e uma ProgressBar:



Vamos criar o método que irá gerar a foto menor:

private void GravarThumb (FileInfo Arquivo)
{
   Bitmap bm;
   Bitmap thumb;
   int altura;
   int largura;

   bm = (Bitmap)Bitmap.FromFile(Arquivo.FullName);

   if(bm.Width > 640 || bm.Height > 640)
   {
      altura = (int)(640f/ bm.Width * bm.Height);
      if(altura > 640)
      {
         largura = (int)(640f/ bm.Height * bm.Width);
         thumb = new Bitmap(bm, new Size(largura, 640));
      }
      else
      {
         thumb = new Bitmap(bm, new Size(640, altura));
      }
   }
   else
   {
      thumb = new Bitmap(bm);
   } 
   thumb.Save(Arquivo.DirectoryName + "/tn_" + Arquivo.Name, System.Drawing.Imaging.ImageFormat.Jpeg);
}

E dentro do evento Click do Button:

if
   (folderBrowser.ShowDialog() == DialogResult.OK)
   {
   DirectoryInfo d = new DirectoryInfo(folderBrowser.SelectedPath);
   FileInfo[] Arquivos;

   if(chkIncluirSubPastas.Checked)
       Arquivos = d.GetFiles("*.jpg",SearchOption.AllDirectories);
   else
       Arquivos = d.GetFiles("*.jpg",SearchOption.TopDirectoryOnly);

   progressBar1.Maximum = Arquivos.Length;

   foreach(FileInfo Arquivo in Arquivos)
   {
      GravarThumb(Arquivo);
      progressBar1.Value++;
      Application.DoEvents();
   }
   progressBar1.Value = 0;
}

 

Inserindo strings em Imagens

10/11/2007 3:25:00 PM By Felipe Pessoto

Este é um pequeno artigo, ou melhor uma dica de como inserir uma string nas suas fotos.

Um exemplo prático seria para um texto de Copyright

Vamos ao código:

//Carregamos o arquivo da imagem pra uma classe Image
//(poderia ser Bitmap também, que é uma classe derivada da Image)
Image i = Image.FromFile(@"C:\WINDOWS\Web\Wallpaper\Alegria.bmp");

//Instanciamos um objeto Graphics,
//que contém métodos para editarmos nossa Image
Graphics g = Graphics.FromImage(i);

//Instanciamos o objeto Font,
//escolhemos o nome da Font, tamanho e estilos
//(para usar dois ou mais estilos use o operador Bitwise
//ex.: FontStyle.Bold | FontStyle.Italic)
Font f = new Font("Verdana", 40, FontStyle.Bold);

//O objeto StringFormat é opcional,
//você pode usa-lo para configurar alinhamento e direção do texto(entre outras opções)
StringFormat s = new StringFormat();
s.Alignment = StringAlignment.Center;

//Agora simplesmente chamamos o método DrawString,
//passando a string que queremos escrever na imagem, a fonte,
//um Brush(você pode usar algum das propriedades da classe Brushes,
//ou criar um Brush personalizado),
//o local que você quer a string e opcionalmente um StringFormat.
g.DrawString("Felipe", f, Brushes.Blue, 100f, 100f, s);

//Finalmente salvamos o arquivo
i.Save(@"C:\WINDOWS\Web\Wallpaper\Alegria2.bmp");

É muito simples! Espero postar outros artigos em breve, assim que tiver mais tempo.