我需要获取应用程序窗口的一些屏幕截图。我的笔记本电脑分辨率低,我想获得高质量的图像。
有没有办法将屏幕抓取为矢量图形(例如EPS,PDF,SVG)?或者,是否可以采用比原始分辨率更高的分辨率拍摄屏幕截图?
我的原始分辨率为1366x768,而我至少需要接近4000x3000的分辨率。
我需要获取应用程序窗口的一些屏幕截图。我的笔记本电脑分辨率低,我想获得高质量的图像。
有没有办法将屏幕抓取为矢量图形(例如EPS,PDF,SVG)?或者,是否可以采用比原始分辨率更高的分辨率拍摄屏幕截图?
我的原始分辨率为1366x768,而我至少需要接近4000x3000的分辨率。
Answers:
当然!是的,你可以这样做。您将需要一个具有矢量后端的UI渲染引擎。Gtk + 3+具有该后端。请看这个项目:
但是您应该知道应用程序应该能够在使用Gtk +的Linux上运行。也许您可以使用此方法或使用Microsoft Visio创建具有矢量输出的模型。
请参阅以下示例:
如果您是Debian / Ubuntu用户,则只需安装即可
$ sudo apt-get install gtk-vector-screenshot
$ take-vector-screenshot
然后,您只需要选择要使用鼠标截图的应用程序即可。当前,该应用程序应为Gtk + 3,才能成功获取矢量屏幕快照。结果将是当前工作目录中的PDF文件。
PS:好消息:Firefox 42 将使用Gtk + 3。
捕捉为向量?不,当然不是。如果没有某种钩子,捕捉程序就无法了解屏幕上形状的几何形状。
但是,您可以做的是捕获栅格图像,然后将其转换为vector。有一些像Inkscape这样的工具可以执行此转换(尽管您通常必须手动进行一些调整,即使那样,您也很少能够获得像素完美的结果)。
至于分辨率,当您执行捕获时,它不能捕获的信息多于可用信息。您可以重新调整结果图像的大小,如果使用良好的缩放算法,则插值像素将很好地融合在一起,但是没有办法创造比现有更多的像素信息。
从理论上讲,有可能实现一种系统,在该系统中,所有内容都以较高的分辨率在内部呈现,然后以较小的分辨率发送到屏幕,但这将需要操作系统和驱动器的特殊支持,并且由于它的用途非常有限,并且在大多数情况下只会浪费内存,因此不太可能实现。
您可能可以使用桌面平移来获得比屏幕支持的分辨率更高的分辨率的桌面,但是同样,这要求您的驱动程序支持它。
目前没有。这应该可行,但事实并非如此。
Windows自Vista开始使用Windows Presentation Foundation
OS X使用显示后记。
两者都是本机矢量UI,但也允许使用位图 -这非常适合SVG。但是,尽管存在将WPF导出到SVG的工具,但大多数工具都是针对软件开发人员的。例如,您将需要应用程序的XAML源,然后将其导出到SVG中。