Pergunta

Como usar C # para capturar uma imagem de um url específico?

Eu quero usar C # para automaticamente capturar uma imagem de uma página Web com base em uma URL específica.

Por exemplo, eu tenho uma página contém um txtUrl.Text = " http: //www.some .com / index.aspx ", então eu clicar em um botão, como posso capturar uma imagem desse URL?

Foi útil?

Solução

Eu suponho que você quer fazer isso a partir de ASP.NET (em oposição a partir de um aplicativo WinForms).

Em seu projeto web, adicionar uma referência para System.Windows.Forms (sim, isso é uma coisa ruim para fazer). Em seu código-behind, você pode criar um objeto do tipo System.Windows.Forms.WebBrowser:

WebBrowser browser = new WebBrowser();
// this will load up a URL into the web browser:
browser.Navigate(@"http://www.stackoverflow.com"); 

Em seguida, basta usar a função BitBlt API (desculpe, eu não tenho um link acessível) para copiar exibição gráfica do controle WebBrowser a um Bitmap (que você pode então exibir ou salvar ou qualquer outro). Com esta função, a propriedade Handle do WebBrowser é um dos parâmetros para passar.

Update: aqui está um link para algum código que faz exatamente o que você precisa: http://www.developerfusion.com/code/4712/generate-an-image-of-a-web-page/

Outras dicas

Se você quer dizer um visual da página web, uma abordagem é integrar o IE para a sua aplicação e tendo programaticamente um screenshot. Este (para o navegador web integrado) e este (para tirar screenshots com C #) podem ser de uso. Este é, naturalmente IE dependente.

Outra opção é usar o shotserver e projectos shotfactory utilizados para browsershots.org . Eles podem ser encontrados aqui , embora eu não tenho certeza se há uma API .NET para -lo.

Eu não acho que é realmente possível apenas usando C #. Isso é porque C #, ou o .NET framework para esse assunto, não oferecem qualquer tipo de HTML de marcação recursos de renderização. O mais próximo que você pode obter - na minha opinião -. Seria a utilização de um controle WebBrowser e, em seguida, tentar de alguma forma capturar sua saída gráfica (que seria a página renderizada)

A outra maneira de fazer isso seria a de olhar para um componente .NET que pode fazer o que quiser .. Embora eu não sei de nenhum que fazer.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top