Por si alguien necesita una funcionalidad parecida a lo que ofrecen sitios como WebSnapr o Snap, a continuación pongo la manera de capturar una página web como imagen.
using (WebBrowser navegador = new WebBrowser())
{
// Tamaño del navegador
navegador.Size = new Size(1024, 768);
// Deshabilitar la barra de scroll
navegador.ScrollBarsEnabled = false;
// Cargar la página
navegador.Navigate(url);
// Esperar a que cargue completamente la página
while (navegador.ReadyState != WebBrowserReadyState.Complete)
{
Application.DoEvents();
}
// Tamaño de la imagen a capturar
Rectangle tamaño = new Rectangle(0, 0, 1024, 768);
Bitmap bitmap = new Bitmap(tamaño.Width, tamaño.Height);
// Guardar la imagen de la página con el tamaño especificado
navegador.DrawToBitmap(bitmap, tamaño);
// Convertir y guardar la imagen como jpg
Bitmap thumbnail = new Bitmap(tamaño.Width, tamaño.Height);
Graphics gfx = Graphics.FromImage(thumbnail);
gfx.DrawImage(bitmap, tamaño, tamaño, GraphicsUnit.Pixel);
thumbnail.Save(@"E:\demos\demo.jpg", ImageFormat.Jpeg);
}
Esa porción de código hace una captura de 1024x728 pixeles, si se quiere capturar la página completa sólo es necesario jugar con los valores de navegador.Document.Body.ClientRectangle
.
Por otro lado, como seguramente saben la clase WebControl usa internamente los controles de Internet Explorer disponibles en la máquina donde se ejecuta la aplicación, así que si un sitio se ve mal con este navegador, la imagen capturada también tendrá este pequeño problema.
6 replies on “Capturar una página Web de manera sencilla”
Ocurre algo extraño. Al intentar capturar alguna página como Google o Yahoo!, simplemente se ve todo blanco. ¿Cuál es el motivo?
al ejecutar estas lineas de codigo, me guarda una imagen que es abajo negra y todo el resto blanco. Me di cuenta que me falta un using y una referencia para que me permita usar el metodo DrawToBitmap del navegador que no se cual es. Alguien podría decirmelo?
Gracias!!!
Eso no resulta
Hola, excelente ejemplo de codigo auque no lo probe aun, porque lo que yo quiero es algo muy parecido a este ejemplo:
1.- Cargar una pagina en el webBrowser
2.- Guardar una imagen cualquiera desde el webBriwser a mi disco duro, por decirles asi WB.document.images[0].Save("d:/imagenes")
Alguien me puede ayudar en esto parece sencillo pero llevo tiempo sinpoder hacerlo
Aqui un ejemplo en vb.net , el ejemplo funciona pero la imagen debe ser realizada solo en el evento document_completed del webBrowser, no se porque pero asi es
Dim WithEvents wb As New WebBrowser
Private Sub Form1_Load(...........)
AddHandler wb.DocumentCompleted, AddressOf document_completed
wb.Navigate("www.google.com")
End Sub
Sub document_completed()
Dim bmp As New Bitmap(300, 300)
wb.DrawToBitmap(bmp, New Rectangle(0, 0, 300, 300))
pictureBox1.Image = bmp
End Sub
Bolivia es una mentira total, los ricos en bolivia se encuentran en la PAZ y apoyan a EVO morales, pero hacen una lucha falsa en contra de personas de otros dptos.
no funciona mi mensaje