Criando efeitos em fotos no ASP.NET
Bom, sei que já escrevi esse artigo no linha de código e no código fonte, e também sei que não posto nada construtivo em meu blog faz tempo… ;-)
por isso estou dando um copy+paste dele aqui em em blog! ;P
Vamos lá….
O .Net possui uma excelente biblioteca para tratamento de imagens, ela nos possibilita gerar efeitos, recortes, desenhos e etc, tudo através de uma “simples“ página asp.net.
Antigamente para criar efeitos em fotos precisavamos usar alguma IDE gráfica para depois publica-las na internet. Hoje podemos fazer isso on-line, sem perder tempo.
Neste momento você deve estar pensando, “isso deve ser algo MUITO DIFICIL!”
Mas acredite, não é!
Hoje teremos uma prova de como é fácil e simples brincar com fotos usando Dot.Net.
Para começar abra o Visual Studio, em seguida crie um projeto WebSite.
Em seu WebForm, arraste 3 controles de imagem.

Defina uma imagem para o controle Image1.
Para o controle Image2 defina a ImageUrl como fotos.apx?tipo=negativo e para o controle Image3 defina a ImageUrl como fotos.apx?tipo=cinza
Exemplo:
<asp:Image ID=”Image1″ runat=”server”
ImageUrl=”foto.jpg” /><br />
<asp:Image ID=”Image2″ runat=”server”
ImageUrl=”fotos.aspx?tipo=negativo” /><br />
<asp:Image ID=”Image3″ runat=”server”
ImageUrl=”fotos.aspx?tipo=cinza” />
Acho que já deu para entender o que vamos fazer mais adiante, certo? :-]
No .cs de sua página, adicione os namespaces System.Drawing e System.Drawing.Imaging em seguida crie o método Efeito. Este método possui a seguinte assinatura:
public void Efeito(string tipo)
Implementação:
public void Efeito(string tipo)
{
/*Aqui estamos definindo nossa imagem. Note que estamos carregando a imagem definida no Image1.
*No artigo gerando barras expliquei como funciona a classe Bitmap.*/
Bitmap bmp = new Bitmap(Server.MapPath(this.Image1.ImageUrl));
int x, y;
Byte RGB;
Color cor;
for (y = 0; y < bmp.Height; y++)
{
for (x = 0; x < bmp.Width; x++)
{
/*O metodo getPixel como o nome já diz,passa a cor do pixel nas posições de x,y.*/
cor = bmp.GetPixel(x, y);
RGB = cor.G;
/*Neste ponto escolhemos qual efeito usar. Lembrando que você pode criar seus próprios efeitos, basta modificar os valores do RGB.*/
if(tipo == ”negativo”){
// Configuração para gerar o efeito de NEGATIVO
bmp.SetPixel(x, y,
Color.FromArgb(255, 255 – cor.R,
255 – cor.G, 255 – cor.B));
}
else
{
/* ajuste para gerar efeito cinza em sua foto! */
bmp.SetPixel(x, y, Color.FromArgb(RGB, RGB, RGB));
}
}
}
/* Neste ponto você informa ao browser que o documento enviado a ele, é uma imagem;*/
Response.ContentType = ”image/jpeg”;
bmp.Save(Response.OutputStream,ImageFormat.Jpeg);
bmp.Dispose();
}
No Page_load de sua página adicione a instrução abaixo.
if(Request.QueryString["tipo"] != null)
Efeito(Request.QueryString["tipo"]);
O resultado será semelhante a imagem abaixo:

viu como a mágica acontece? ;-)
[]’s

