Nesse artigo veremos como gerar um
Thumbnail (ou
Screenshot) de um HTML. Por exemplo: às vezes queremos ter uma prévia de uma página e não temos como vê-la a não ser abrindo-a. Então geremos o
thumb delas e coloquemo-as em um
DataList. No caso não colocarei no
DataList... apena mostrarei como gerar o
thumb. Usaremos o componente
WebsitesScreenshot. Essa DLL permite:
- Gerar um thumb através de um arquivo HTML local (indicando o arquivo ou inserindo o código-fonte);
- Gerar um thumb através de uma URL;
- Salvar o thumb gerado ou exibir na tela, etc.
É um poderoso componente que você pode manipular de várias formas e chegar a bons resultados. Irei mostrar algo bem simples: gerarei um thumb de uma URL e exibirei em uma imagem. Vamos?
Crie uma página (Web Form) qualquer onde será exibida o thumb. Adicione um Image e no seu atributo ImageUrl indique o valor Thumb.ashx. Agora criemos um Generic Handler chamado Thumb.ashx no projeto. Dentro do ProcessRequest coloque o seguinte trecho de código ficando da seguinte forma:
public void ProcessRequest (HttpContext context) {
WebsitesScreenshot.WebsitesScreenshot ComponenteThumb = new WebsitesScreenshot.WebsitesScreenshot();
WebsitesScreenshot.WebsitesScreenshot.Result ResultadoCaptura = ComponenteThumb.CaptureWebpage("http://www.google.com.br/");
if (ResultadoCaptura == WebsitesScreenshot.WebsitesScreenshot.Result.Captured)
{
System.Drawing.Image thumb = ComponenteThumb.GetImage().GetThumbnailImage(140, 110, null, new IntPtr());
MemoryStream ms = new MemoryStream();
context.Response.ContentType = "image/png";
thumb.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
ms.WriteTo(context.Response.OutputStream);
}
ComponenteThumb.Dispose();
}
Não se esqueça de adicionar o namespace System.IO; lá. O resultado seria algo do tipo:
A depender dos parâmetros que você trabalhar e qualidade dos objetos, o resultado final vem a ser melhor do que isso. O que mostrei foi o básico do componente!
Se fosse para gerar o thumb de um arquivo HTML local ou código-fonte, bastaria inserir o seu conteúdo em uma string e depois usar o seguinte método:
string HtmlArquivo = "Você visitou o blog de Thiago Marçal!";
WebsitesScreenshot.WebsitesScreenshot.Result ResultadoCaptura = ComponenteThumb.CaptureHTML(HtmlArquivo);
E o resultado seria:
Está pequenininho, mas é
thumb! Mais informações você pode obter no
site oficial.