2009-04-17 11 views
11

Quiero ser capaz de crear una captura de pantalla de un sitio web dado, pero el sitio web puede ser más grande de lo que se puede ver en la pantalla. ¿Hay alguna manera de que pueda hacer esto?¿Cómo puedo crear mediante programación una captura de pantalla de un sitio web determinado?

El objetivo es hacer esto con .NET en C# en una aplicación WinForms.

+0

Hay alguien que quiere hacer esto como un script del lado del servidor, pero necesito una aplicación Windows Forms. –

Respuesta

0

Haciendo como en una captura de pantalla es probable que poner feo. Es bastante fácil capturar todo el contenido de la página con wget, pero la imagen significa capturar el renderizado.

Aquí está some tools que pretenden hacerlo.

2

Acabo de enterarme del sitio web browsershots.org que genera capturas de pantalla para un conjunto completo de diferentes navegadores. Hasta cierto punto, incluso puede especificar la resolución.

1

Escribí un programa en VB.NET que hizo lo que usted especificó, excepto por el problema del tamaño de la pantalla.

Insecté un control web (miro la parte inferior de todos los controles) en mi formulario y ajusté su configuración (Ocultar desplazamiento). Usé un temporizador para esperar en contenido dinámico, y luego usé "copyFromScreen" para obtener la imagen.

Mi programa tiene dimensiones dinámicas (configurables a través de la línea de comandos). Descubrí que si hacía que mi programa fuera más grande que la pantalla, la imagen simplemente devolvería píxeles negros para el área fuera de pantalla. No investigué más lejos ya que mi trabajo estaba completo en ese momento.

Espero que te dé un buen comienzo. Perdón por cualquier redacción incorrecta. Me conecto a Windows para desarrollar solo una vez cada dos meses.

0

Este es el código para la creación de pantalla mediante programación:

 

using System.Drawing.Imaging; 


int screenWidth = Screen.GetBounds(new Point(0, 0)).Width; 
int screenHeight = Screen.GetBounds(new Point(0, 0)).Height; 
Bitmap bmpScreenShot = new Bitmap(screenWidth, screenHeight); 
Graphics gfx = Graphics.FromImage((Image)bmpScreenShot); 
gfx.CopyFromScreen(0, 0, 0, 0, new Size(screenWidth, screenHeight)); 
bmpScreenShot.Save("test.jpg", ImageFormat.Jpeg); 
 
+0

-1 Esa es una captura de pantalla del escritorio de los usuarios, no de un sitio web – Basic

0

Usted puede hacerla en el control WebBrowser y luego tomar instantáneas si el tamaño de página más grande que el tamaño de pantalla que tiene que desplazarse a tomar el control de una o más instantáneas y luego fusionar todas las imágenes :)

0

Java imágenes de WebSite

Combine Screens juntos para Pantallas página web completa finales caliente.

public static void main(String[] args) throws FileNotFoundException, IOException { 
     System.setProperty("webdriver.chrome.driver", "D:\\chromedriver.exe"); 
     ChromeDriver browser = new ChromeDriver(); 
     WebDriver driver = browser; 
     driver.get("https://news.google.co.in/"); 
     driver.manage().timeouts().implicitlyWait(500, TimeUnit.SECONDS); 

     JavascriptExecutor jse = (JavascriptExecutor) driver; 
     Long clientHeight = (Long) jse.executeScript("return document.documentElement.clientHeight"); 
     Long scrollHeight = (Long) jse.executeScript("return document.documentElement.scrollHeight"); 
     int screens = 0, xAxis = 0, yAxis = clientHeight.intValue(); 
     String screenNames = "D:\\Screenshots\\Yash"; 
     for (screens = 0; ; screens++) { 
      if (scrollHeight.intValue() - xAxis < clientHeight) { 
       File crop = new File(screenNames + screens+".jpg"); 
       FileUtils.copyFile(browser.getScreenshotAs(OutputType.FILE), crop);     

       BufferedImage image = ImageIO.read(new FileInputStream(crop));    
       int y_Axixs = scrollHeight.intValue() - xAxis; 
       BufferedImage croppedImage = image.getSubimage(0, image.getHeight()-y_Axixs, image.getWidth(), y_Axixs); 
       ImageIO.write(croppedImage, "jpg", crop);    
       break; 
      }    

FileUtils.copyFile(browser.getScreenshotAs(OutputType.FILE), new File(screenNames + screens+".jpg")); 
jse.executeScript("window.scrollBy("+ xAxis +", "+yAxis+")"); 

       jse.executeScript("var elems = window.document.getElementsByTagName('*');"        
         + "  for(i = 0; i < elems.length; i++) { " 
         + "   var elemStyle = window.getComputedStyle(elems[i], null);" 
         + "   if(elemStyle.getPropertyValue('position') == 'fixed' && elems[i].innerHTML.length != 0){"                 
         + "    elems[i].parentNode.removeChild(elems[i]); "         
         + "}}"); // Sticky Content Removes 
       xAxis += yAxis; 
     } 
     driver.quit(); 
    } 
Cuestiones relacionadas