Gerar Thumbnail de um HTML

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.

3 comentários:

Leonardo disse...

tem como tirar esta cruz cinza ai????

Thiago Marçal disse...

Leonardo, comprando o componente é removido a marca d'água cinza.

Formel disse...

Tem a opção do www.memex.com.br. Ele captura qualquer url e te devolve um JPG, PNG ou PDF.

Postar um comentário