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