sexta-feira, 19 de julho de 2002

Criando e Manipulando Imagens "On Fly" no ASP.NET (C# e VB)

Este é um pequeno exemplo para criar e/ou manipular imagens em tempo de execução. Uma utilização bem interessante é:
<img src="imagem.aspx">
ou
<img src="imagem.aspx?texto=Bom dia">


Este tipo de recurso sempre me foi muito necessário, o qual eu só tive resultados em servidores que desponibilizavam o componente ASPImage ou com a linguagem PHP. A aplicação recebia uma imagem, upload via web, e salvava 3 arquivos dessa mesma imagem, em tamanhos variados.


Neste exemplo, é criado uma imagem como um "contador de Hits".


===== Usando C#
<%
@Page language="c#" ContentType="image/jpeg"  %> 
<% @Import Namespace="System.Drawing" %> 
<% @Import Namespace="System.Drawing.Imaging" %> 
<% @Import Namespace="System.Drawing.Drawing2D" %>
<% 
Response.ClearContent();


// criando novo Bitmap no formato 24bit, dimensões 120x30
Bitmap imagem = new Bitmap(120, 30, PixelFormat.Format24bppRgb);  


// criando novo objeto gráfico (objeto que será manipulado)
Graphics g = Graphics.FromImage(imagem);
 
// contando (tentei fazer isso incrementar, mas não deu certo)
Application["intPageCount"] = 1;
 
// limpa a imagem (neste caso, coloca a cor do fundo)
g.Clear(Color.Yellow);


// antialias (suavizando serrilhado)
g.SmoothingMode = SmoothingMode.AntiAlias;
 
// pinta o número na imagem criada 
g.DrawString("Conta: " + Application["intPageCount"], new Font("verdana",14,FontStyle.Bold),SystemBrushes.WindowText, new PointF(2,2));
 
// cria efeito degrade 
g.FillRectangle(new LinearGradientBrush(new Point(0,0), new Point(120,30), Color.FromArgb(0,0,0,0),Color.FromArgb(255,255,255,255)),0,0,120,30);
 
// exibe a imagem
imagem.Save(Response.OutputStream, ImageFormat.Jpeg);


// desalocando objetos da memória
g.Dispose();
imagem.Dispose();
Response.End();
%> 


===== Usando VB
<%
@ page language="vb" contenttype="image/jpeg" %> 
<%@ import namespace="system.drawing" %> 
<%@ import namespace="system.drawing.imaging" %> 
<%@ import namespace="system.drawing.drawing2d" %> 
<% 
response.clear


' criando novo Bitmap no formato 24bit, dimensões 120x30
dim imagem as New bitmap(120, 30, pixelformat.format24bpprgb)  


' criando novo objeto gráfico (objeto que será manipulado)
dim g as graphics = graphics.fromImage(imagem) 
 
' contando
application("intPageCount")+=1  
 
' limpa a imagem (neste caso, coloca a cor do fundo)
g.clear(color.yellow) 


' antialias (suavizando serrilhado)
g.smoothingMode = smoothingMode.antiAlias
 
' pinta o número na imagem criada 
g.drawString("Conta: " & application("intPageCount"), New font("verdana",14,fontstyle.bold),systembrushes.windowtext, New pointF(2,2)) 
 
' cria efeito degrade 
g.FillRectangle(New linearGradientBrush(New point(0,0), New point(120,30), color.fromArgb(0,0,0,0),color.fromArgb(255,255,255,255)),0,0,120,30) 
 
' exibe a imagem
imagem.save(response.outputstream, imageformat.jpeg)  


' desalocando objetos da memória
g.dispose() 
imagem.dispose() 
response.end 
%>


exemplo1: http://www.fixe.com.br/asp4d/imagem1.aspx


exemplo2: http://www.fixe.com.br/asp4d/imagem2.aspx

download do código: http://www.fixe.com.br/asp4d/image-x.zip

Esta matéria foi postada originalmente no ASP4Developers por Felipe "Prog" Esteves (site), que na época era "Prog (da rede Brasnet de IRC) - Analista de Sistemas, WebMaster, WebDesigner, Programador e Maluco. Conhecimento: C/C++, ObjectPascal, Java, JavaScript, ActionScript, ActivePerl, ASP, PHP, T-SQL e derivados. Ferramentas: Linux, WinXP, MSSQL, MySQL, IB, MSAccess, Delphi, C++Builder, Forte, ERWin, TextPad, IIS5, Resin, Apache, Tomcat, mod_php, mod_perl, ActivePerl, SDK.NET, J2EE SDK, MSXML, Flash, Dreamweaver, CorelDRAW e PhotoShop. Atualmente estudando (fase de conclusão do curso superior de Sistemas de Informação - www.unp.br), aprimorando conhecimento em tecnologias (XML, SVG, Java/JSP, .NET) e cuidando da empresa (www.fixe.com.br).". Hoje, vai saber...

0 comentários: