Feliz Natal e Até Ano que Vem

Pessoal,

Feliz Natal, Próspero Ano Novo, tudo de bom, etc e tal para todos vocês!

Infelizmente em Dezembro não tive muito tempo para escrever artigos, mas para o ano teremos boas matérias. Estou preparando uma série de artigos para o tema Newsletter que vai ser show de bola. Então, divirtam-se... Dia 10/01/2011 voltamos com as novidades!

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.

Flash Control - Componente ASP.NET para Incluir Flash nas Páginas

Você pode estar se perguntando? Porque usar esse componente ao invés de usar embed, object do próprio HTML? Bem, abaixo tem uma algumas vantagens de sua utilização:

  • Funciona com o framework 2.0, 3.0, 3.5 e 4.0;
  • Funciona em conjunto com o ASP.NET AJAX;
  • Cross browser;
  • Passagem de variáveis para o Flash e comunicação JS, etc.

Essas e outras vantagens o componente lhe dá para não ter dores de cabeça. O Flash Control ainda lhe resolve o problema do flash sumir quando dado um PostBack. Vamos lá? É bem simples seu uso. Primeiro baixe a DLL do componente aqui (há 2 versões dela: paga e a free - pegue a free). Adicione a DLL FlashControl.dll na pasta Bin de seu projeto. Na página que queira exibir registre a DLL e invoque-a usando os seguintes trechos de códigos:

<%@ Register Assembly="FlashControl" Namespace="Bewise.Web.UI.WebControls" TagPrefix="Bewise" %>


<Bewise:FlashControl ID="FlashControlEmbed" runat="server" MovieUrl="~/arquivo.swf" BrowserDetection="False" Height="200px" Width="200px" />

Pronto! Mais informações e outras opções (transparência, FLV, parâmetros, etc) podem ser encontradas na página de Faq deles.