我希望能够创建给定网站的屏幕截图,但该网站可能比屏幕上显示的要大。有没有办法我可以做到这一点?
目标是在 WinForms 应用程序中使用 C# 中的 .NET 执行此操作。
我希望能够创建给定网站的屏幕截图,但该网站可能比屏幕上显示的要大。有没有办法我可以做到这一点?
目标是在 WinForms 应用程序中使用 C# 中的 .NET 执行此操作。
有几个工具。
问题是,你需要在某个给定的程序中渲染它,并拍摄它的快照。我不了解.NET,但这里有一些工具可供查看。
我刚刚发现了 browsershots.org 网站,它为一大堆不同的浏览器生成屏幕截图。在某种程度上,您甚至可以指定分辨率。
我在 VB.NET 中编写了一个程序,除了屏幕尺寸问题外,它执行了您指定的操作。
我在表单中嵌入了一个 Web 控件(查看所有控件的最底部),并调整了它的设置(隐藏滚动)。我使用计时器等待动态内容,然后使用“copyFromScreen”获取图像。
我的程序具有动态尺寸(可通过命令行设置)。我发现如果我的程序比屏幕大,图像只会返回屏幕外区域的黑色像素。因为那时我的工作已经完成,所以我没有进一步研究。
希望能给你一个好的开始。对不起,任何错误的措辞。我每隔几个月登录一次 Windows 进行开发。
将 at 作为屏幕截图可能会变得丑陋。使用 wget 捕获页面的全部内容很容易,但是图像意味着捕获渲染。
这里有一些声称可以做到这一点的工具。
如果页面尺寸大于屏幕尺寸,您可以在 WebBrowser 控件上呈现它,然后拍摄快照,您必须滚动控件拍摄一个或多个快照,然后合并所有图片:)
这是以编程方式创建屏幕截图的代码:
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);
Java 网站截图
将屏幕组合在一起以获得最终的整个网页屏幕截图。
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();
}