我需要截取一个网站的屏幕截图,因为它会出现在非常高分辨率的显示器上……比如说 4000x3000 像素。我的笔记本电脑屏幕的原始分辨率为 1400x768。基本上,我需要模拟具有比我的显示器和视频卡实际支持的分辨率高得多的显示器分辨率。我希望网站的屏幕截图看起来与您在 Firefox 中反复按 CTRL MINUS(缩小)时的效果差不多,但不会因缩放而丢失任何像素。我怎样才能做到这一点?有没有办法用虚拟机软件模拟超高分辨率显示?如果没有,是否有某种方法可以打开比屏幕大的浏览器窗口,然后以某种方式将其内容捕获为 PNG?还有什么可能有效吗?
browser screenshot screen-capture resolution virtual-machine
我使用一个程序来制作一个大图像,我必须滚动才能查看。该程序无法保存图像,我也无法访问源来修改它。我必须从程序中获取图像的唯一方法是通过屏幕截图。我的目标是保存完整尺寸的图像而不必拼凑单个屏幕截图。
我正在使用此脚本尝试截取屏幕截图:
#!/bin/bash
window=$(wmctrl -l | grep "Program$" | awk '{print $1}')
wmctrl -v -i -r $window -e '0,0,0,6030,5828'
wmctrl -i -a $window
import -window $window ~/Desktop/screenshot.png
Run Code Online (Sandbox Code Playgroud)
这使用 wmctrl 来获取名为“Program”的窗口的窗口 ID($window)。然后它尝试将窗口大小调整为所需的尺寸。它使用 imagemagick(导入)在用户桌面上保存一个 screenshot.png。除了调整大小步骤之外,所有这些都有效。
我可以使用 wmctrl -r -e 调整窗口大小,但是大于屏幕大小的大小不起作用。
我正在使用 Ubuntu 10.04 和 Gnome 桌面。我运行了两台显示器,但我试过其中一台被禁用。
有没有办法调整比我的屏幕大的窗口大小以获得巨大的屏幕截图?
第二部分:
感谢 sdaau 的回答,我尝试使用 xrandr 设置屏幕平移,以便拥有比显示器更大的桌面。
xrandr --output LVDS --panning 2600x2500
Run Code Online (Sandbox Code Playgroud)
此命令使笔记本电脑屏幕在 2600x2500 大小的桌面上平移,即使它一次只能显示 1440x900。要关闭平移,我可以使用类似的命令来设置平移部分的总大小和零。这让我恢复了原来的笔记本电脑显示行为。
xrandr --fb 1440x900 --output LVDS --panning 0x0
Run Code Online (Sandbox Code Playgroud)
这一切都是用 xrandr 完成的,不需要任何 Xorg.conf 更改(我的 Ubuntu 系统甚至没有 Xorg.conf)。
我的视频卡似乎只允许大约 650 万像素,即使最大尺寸是 8192x8192。该最大值似乎是任一维度的最大值,但可以绘制的像素数是有限制的,即宽度乘以高度。
调整屏幕大小后,我再次尝试了我的脚本并获得了屏幕截图。然而,屏幕截图完全混乱。我不确定它是否无法截取屏幕外窗口的屏幕截图,或者是否无法处理窗口的大尺寸。使用平移显示,窗口应该认为它是可见的,而窗口管理器应该认为它在屏幕上。所以在某个地方有一个像素缓冲区,里面有这些像素,所以应该有一种方法来获取屏幕截图。 …