Как я могу программно создать снимок экрана на данном веб-сайте?

Я хочу иметь возможность создать снимок экрана на определенном веб-сайте, но веб-сайт может быть больше, чем можно просмотреть на экране. Есть ли способ, которым я могу это сделать?

Цель состоит в том, чтобы сделать это с .NET в С# в приложении WinForms.

Ответ 1

Есть несколько инструментов.

Дело в том, что вам нужно отобразить его в некоторой заданной программе и сделать снимок. Я не знаю о .NET, но здесь есть некоторые инструменты для просмотра.

Ответ 2

Я только что узнал о веб-сайте browsershots.org, который генерирует скриншоты для целой группы разных браузеров, В определенной степени вы даже можете указать разрешение.

Ответ 3

Я написал программу в VB.NET, которая сделала то, что вы указали, , за исключением проблемы с размером экрана.

Я вложил веб-элемент управления (посмотрите на самое нижнее из всех элементов управления) на мою форму и изменил настройки (Hide scroll). Я использовал таймер, чтобы ждать динамического содержимого, а затем я использовал "copyFromScreen", чтобы получить изображение.

Моя программа имела динамические размеры (настраивается через командную строку). Я обнаружил, что если бы я сделал свою программу больше, чем экран, изображение просто вернет черные пиксели для области вне экрана. Я не исследовал дальше, так как моя работа была завершена в то время.

Надеюсь, это даст вам хорошее начало. Извините за неправильные формулировки. Я вхожу в окна для разработки только один раз каждые пару месяцев.

Ответ 4

Выполнение снимка экрана, скорее всего, станет уродливым. Это достаточно просто, чтобы захватить весь контент страницы с помощью wget, но изображение означает захват рендеринга.

Здесь некоторые инструменты, которые предназначены для этого.

Ответ 5

Это программный код для создания скриншотов:


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);

Ответ 6

Вы можете отобразить его на элементе управления WebBrowser, а затем сделать снимок, если размер страницы больше размера экрана, который вы должны прокручивать, управлять одним или несколькими моментальными снимками, а затем объединить все снимки:)

Ответ 7

Скриншоты Java WebSite

Объединить экраны вместе для окончательного скриншота Final Entire WebPage.

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();
    }