Могу ли я сделать снимок экрана как векторную графику или с более высоким разрешением, чем у родного?

32

Мне нужно сделать несколько скриншотов окна приложения. Разрешение моего ноутбука низкое, и я хотел бы получать изображения высокого качества.

Есть ли способ захватить экран как векторную графику (например, EPS, PDF, SVG)? Альтернативно, есть ли способ сделать скриншот с более высоким разрешением, чем у родного?

Мое собственное разрешение - 1366x768, хотя мне нужно разрешение не менее 4000x3000.

Alfatau
источник
Я взял Windows для вашего вопроса. Пожалуйста, отредактируйте и повторно пометьте, если это не так.
Slhck
> Вы можете попробовать изучить масштабирование пользовательского интерфейса. Это не меняет общее количество пикселей, отображаемых на экране или доступных для захвата.
Synetech
1
Это кажется очень запутанным. Допустим, у вас был дисплей 10k на 10k; как именно вы думаете, окно приложения должно выглядеть по-другому? Должно ли оно содержать больше элементов, или вы хотите, чтобы в нем было больше деталей? Это родное приложение win32 или какой-то другой инструментарий, такой как Qt, Java или даже окно OpenGL или DirectX?
Эроен
2
Идея была другая. Я знаю, что не могу создать пиксели, которых нет на дисплее. Я искал «виртуальный» инструмент для улучшения разрешения экрана, чтобы я мог фактически установить любое разрешение, и если оно выше возможностей дисплея, мне придется прокручивать экран, просматривая каждый раз только его подмножество, и иметь возможность печатать виртуальный экран для изображения вместо фактического подмножества виртуального экрана, который просматривается.
Альфатау

Ответы:

21

Конечно! Да, вы можете сделать это. Вам понадобится механизм рендеринга пользовательского интерфейса с векторным бэкэндом. Gtk + 3+ имеет этот бэкэнд. Пожалуйста, посмотрите этот проект:

Но вы должны знать, что приложение должно быть в состоянии работать в Linux с помощью Gtk +. Может быть, вы можете создать макеты либо с помощью этого метода, либо с помощью Microsoft Visio для векторного вывода.

Смотрите эти образцы:

Если вы пользователь Debian / Ubuntu, для установки вы можете просто сделать

$ sudo apt-get install gtk-vector-screenshot
$ take-vector-screenshot

И тогда вам нужно только выбрать, какое приложение вы хотите сделать скриншот с помощью мыши. Конечно, приложение должно быть Gtk + 3 для успешного векторного скриншота. Результатом будет файл PDF в текущем рабочем каталоге.

взять-вектор-скриншот приложения

PS: Хорошая новость: Firefox 42 будет использовать Gtk + 3 .

HO1
источник
1
Ницца! Хотя вопрос помечен Windows, это все еще очень полезный ответ для будущих посетителей, которые найдут этот вопрос.
Арджан
1
Спасибо, на самом деле этот тег не от парня, который задал вопрос. На самом деле, это довольно сложный процесс, но с Metro и Retina, возможно, это возможно / будет возможно на Win / Mac. Это заслуживает хорошего исследования.
Ho1
@ Ho1, из поиска в Интернете кажется, что OS X может делать скриншоты в формате PDF: idownloadblog.com/2014/07/31/…
Andrea
@AndreaLazzarotto Спасибо. Но это вектор? Я не смог найти ссылку для скачивания. Если у вас есть Mac, не могли бы вы сделать скриншот PDF самостоятельно? У нас были некоторые обсуждения здесь о векторных скриншотах Mac, здесь: apple.stackexchange.com/a/144596/90089
Ho1
1
Я могу сделать скриншоты других программ, но если я запишу это с Firefox, он сделает снимок экрана, но снимок экрана будет полностью пустым. Работаю над Ubuntu Gnome. Снимки экрана Midori или Chromium не работают без сообщения об ошибке или открытия окна ...
nnn
10

Захватить как вектор? Нет, конечно нет. У программы захвата нет возможности узнать что-либо о геометрии фигур на экране, не имея какой-то привязки к программе (-ам), выполняющим рисование.

Однако вы можете сделать снимок растра и затем преобразовать его в вектор . Существуют такие инструменты, как Inkscape, которые могут выполнять это преобразование (хотя обычно вам придется вручную вносить некоторые изменения, и даже тогда вы редко сможете получить идеальные по пикселям результаты).

Что касается разрешения, то при выполнении захвата оно не может захватить больше информации, чем доступно. Вы можете изменить размер получающегося изображения, и если вы используете хороший алгоритм масштабирования, интерполированные пиксели будут смешиваться довольно хорошо, но нет способа изобрести больше информации о пикселях, чем есть.

Теоретически можно было бы реализовать какую-то систему, в которой все отображается внутри с более высоким разрешением, а затем отправляется на экран с меньшим разрешением, но для этого потребуется специальная поддержка как в ОС, так и в накопителе. вряд ли будет реализовано, так как оно имеет очень ограниченное использование и будет тратить память только в большинстве сценариев.

Возможно, вы сможете использовать панорамирование рабочего стола, чтобы получить рабочий стол с более высоким разрешением, чем экран, но опять же, это требует, чтобы ваши драйверы поддерживали его.

Synetech
источник
1
Предполагая, что окно имеет небольшую цветовую палитру и довольно просто, есть en.wikipedia.org/wiki/Pixel_art_scaling_algorithms, которые могут быть полезны.
Эроен
@ hit-and-run-down-voter, в чем (если вообще что-нибудь) твоя проблема? Другим, кажется, нравится ответ, поэтому я не могу решить любые проблемы, которые могут возникнуть или не возникнуть, если вы не оставите комментарий.
Synetech
1
Вы не правы - большинство элементов графического интерфейса основаны исключительно на векторах, включая градиенты. Но - основные операционные системы и инфраструктуры GUI предоставляют API внешних прослушивателей для захватчиков экрана, и это большая проблема, но ни одна из известных программ захвата не поддерживает это. Например, вы можете посмотреть на обычном клиенте Windows Inspect: он может захватывать все события пользовательского интерфейса, и вы можете создать свой собственный инструмент, который будет преобразовывать эти события в векторный скриншот.
Дмитрий Понятов
Но для реального приложения векторного захвата вы должны включить модули OCR и трассировки в качестве запасного варианта - во многих программах используются предварительно вычисленные растровые изображения, и это еще одна (вдохновленная маркетингом) большая проблема.
Дмитрий Понятов
0

Не в настоящее время . Это должно быть возможно, но это не так.

Оба являются нативными векторными пользовательскими интерфейсами, но также позволяют использовать растровые изображения - это отлично подходит для SVG. Однако, хотя существуют инструменты для экспорта WPF в SVG , большинство из них предназначены для разработчиков программного обеспечения. Например, вам понадобится исходный код XAML вашего приложения, а затем экспортируйте его в SVG.

mikemaccana
источник
-1

Для пользователей UNIX вы можете использовать KSnapShot или GIMP. Более подробная информация приведена на графическом экране.

Чтобы установить KSnapShot, вы можете использовать эту ссылку KSnapShot

GIMP также доступен для Windows.

Маулик Мадхави
источник
Похоже, что это обычные инструменты для создания снимков, ничего не сказано о векторной графике или разрешении выше, чем на экране. Я правильно понял?
TS