2009-04-17 48 views
11

Tôi muốn có thể tạo ảnh chụp màn hình của một trang Web cụ thể, nhưng trang Web có thể lớn hơn có thể được xem trên màn hình. Có cách nào tôi có thể làm điều này?Làm thế nào tôi có thể lập trình tạo ảnh chụp màn hình của một trang Web cụ thể?

Mục tiêu là thực hiện việc này với .NET trong C# trong ứng dụng WinForms.

+0

Có ai đó muốn làm điều này dưới dạng tập lệnh phía máy chủ, nhưng tôi cần ứng dụng WinForms. –

Trả lời

0

Làm tại như một ảnh chụp màn hình có khả năng để có được xấu xí. Thật dễ dàng để nắm bắt toàn bộ nội dung của trang bằng wget, nhưng hình ảnh có nghĩa là chụp lại hiển thị.

Dưới đây là some tools có ý định làm điều đó.

2

Tôi vừa phát hiện ra trang web browsershots.org tạo ảnh chụp màn hình cho toàn bộ các trình duyệt khác nhau. Đến một mức độ nhất định, bạn thậm chí có thể chỉ định độ phân giải.

1

Tôi đã viết một chương trình trong VB.NET đã làm những gì bạn đã chỉ định, ngoại trừ vấn đề kích thước màn hình.

Tôi đã nhúng điều khiển web (xem phần dưới cùng của tất cả các điều khiển) vào biểu mẫu của tôi và chỉnh sửa cài đặt của nó (Ẩn cuộn). Tôi đã sử dụng bộ hẹn giờ để chờ nội dung động và sau đó tôi đã sử dụng "copyFromScreen" để tải hình ảnh.

Chương trình của tôi có thứ nguyên động (có thể đặt qua dòng lệnh). Tôi thấy rằng nếu tôi thực hiện chương trình của mình lớn hơn màn hình, hình ảnh sẽ chỉ trả về các pixel màu đen cho vùng màn hình tắt. Tôi đã không nghiên cứu xa hơn vì công việc của tôi đã hoàn thành vào thời điểm đó.

Hy vọng sẽ mang lại cho bạn một khởi đầu tốt. Xin lỗi vì bất kỳ từ sai nào. Tôi đăng nhập vào cửa sổ để phát triển chỉ một lần mỗi vài tháng.

0

Đây là mã để tạo ảnh chụp màn hình programatically:

 

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 Đó là ảnh chụp màn hình của màn hình người dùng chứ không phải của trang web – Basic

0

Bạn có thể làm cho nó về kiểm soát WebBrowser và sau đó đi chụp nếu kích thước trang lớn hơn kích thước màn hình, bạn phải di chuyển kiểm soát mất một hoặc nhiều bức ảnh chụp và sau đó hợp nhất tất cả hình ảnh :)

0

Java chụp màn hình của WebSite

Combine Screens cùng cho Screens WebPage toàn bộ cuối cùng nóng bức.

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(); 
    } 
Các vấn đề liên quan