LINUX.ORG.RU

[c/c++] SCREENSHOT без доп. библиотек (возможно без xlib)


0

0

У всех есть как linux console, так и экземпляр X11 на каком-нить tty. Меня озаботило следующее. Как,универсальным образом, не прибегая к сторонним библиотекам типа Qt(но там с linux console не берется) снять снимок экрана.

Так вот задача. хочу: программа делает скриншоты с текущего экрана и неважно что на нем, linux console или иксы. что умею: с помощью framebuffer брать скрины с linux console.И вообще с экрана. НО. если фреймбуфер не настроен так же как и Иксы(разрешение или глубина цвета), то через него не получается получить полноценное содержимое экрана.

Умею с помощью Qt или совсем чисто на X библиотеках получать содержимое экрана, но это тянет за собой много зависимостей,в том числе и от версий библиотек. Используя только Xlib - не написал, но вместе с ImageMagick или Magick++ написал. Но я хочу, чтобы мое приложение должно иметь минимум зависимостей.

Приходит разумный вопрос: почему бы не настроить одинаково Иксы и фреймбуффер - потому что пользователь не должен заметить изменений в своей системе.Все это делается чтобы снимать скрины с машины, пользователь которой не знает, что его сейчас снимают и он не должен переживать =)

Что хочу спросить: в /dev есть такие устройства как nvidia0 nvidiactrl и т.д. Эти уустройства создаются драйвером видеокарты. Все что мне пока понятно - так это то, что они символьные =))) Как с ними взаимодействовать и через какие ioctl - непонятно. НО ведь как-то это возможно! Или же есть еще какой-нибудь механизм,кроме фреймбуффера для получения содержимого экрана.

Если кто знает или сталкивался с такой темой - поделитесь. Или же реализация скриншотов на чистой Xlib.

Спасибо.


кулкакеры на марше и атаке.

X предоставляют абстракцию над железом, не хочешь абстракции, будь добр под каждое железо пиши сам.

dimon555 ★★★★★
()

Вытащите из ImageMagick нужные вам куски и соберите свою программу статически. X-ый протокол меняется не так часто, как версии библиотек.

mky ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.