Este turorial apresenta um exemplo simples e muito útil para criação de imagens em miniaturas, conhecidas como Thumbnails (Miniaturas).
O Código abaixo é o arquivo principal no qual está configurado para criar a nossa miniatura, de acordo com os parâmetros informados.
Os parâmetros necessário são:
file = nome do arquivo de imagem (tem que estar no mesmo servidor da aplicação)
w = comprimento
h = altura
Salve o código abaixo com o nome “getThumbnail.aspx”
<%@ Page language=”c#”%>
<%@ Import Namespace=”System”%>
<%@ Import Namespace=”System.IO”%>
<script runat=”server”>
private void Page_Load(object sender, System.EventArgs e)
{
// Recebe a QueryString “file”
string file = Request.QueryString["file"];
//Recebe as medidas p/ miniatura
int width = Convert.ToInt32(Request.QueryString["w"]);
int height = Convert.ToInt32(Request.QueryString["h"]);
// cria o object imagem com o nome e camimho completo do arquivo
System.Drawing.Image image = System.Drawing.Image.FromFile(Server.MapPath(file));
// cria o thumbnail do object image, definindo sua altura e largura para 64
System.Drawing.Image thumbnailImage = image.GetThumbnailImage(width, height, new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback), IntPtr.Zero);
// cria a memory stream para trabalhar com os bytes da imagem
MemoryStream imageStream = new MemoryStream();
// coloca a imagem na memory stream
thumbnailImage.Save(imageStream, System.Drawing.Imaging.ImageFormat.Jpeg);
// cria um array de bytes com o tamanho da imagem
byte[] imageContent = new Byte[imageStream.Length];
// rebobina a memory stream
imageStream.Position = 0;
// carrega o array de bytes com a imagem
imageStream.Read(imageContent, 0, (int)imageStream.Length);
// modifica o cabeçalho “content-type” da página para “image/jpeg” e imprime a imagem.
Response.ContentType = “image/jpeg”;
Response.BinaryWrite(imageContent);
}
//função complementar
public bool ThumbnailCallback()
{
return true;
}
</script>
Para utilizá-lo, é simples. Basta configurar a url em asp.net ou src da imagem em html.
Ex.:
em um arquivo asp.net utilize:
<asp:Image runat=”server” ImageUrl=”getThumbnail.aspx?file=imagem.jpg&w=60&h=60″/>
ou em um arquivo .htm, .shtml, .etc…:
<img src=”getThumbnail.aspx?file=imagem.jpg&w=60&h=60″/>