Снимок экрана встроенного фреймбуфера Linux

Я запускаю Embedded Linux на оценочном комплекте (Zoom OMAP35x Torpedo Development Kit). На плате есть ЖК-дисплей, и я хотел бы иметь возможность делать снимки экрана, конвертировать их в gif или png. Я могу получить необработанные данные, выполнив следующее: «cp /dev/fb0 screen.raw», но я не знаю, как преобразовать изображение в формат gif или png.

Я поигрался с конвертацией из ImageMagick (пример: «convert -depth 8 -size 240x320 rgb:./screen.raw -swap 0,2 -separate -combine screen.png»), но не смог получить изображение, которое выглядит правильно.

Кто-нибудь знает какие-либо другие инструменты, которые я мог бы попробовать? Или у кого-нибудь есть советы по использованию ImageMagick?


person waffleman    schedule 29.10.2009    source источник
comment
Является ли Embedded Linux очень конкретной версией/конфигурацией ядра или просто общим названием для Linux, работающего на Embedded? Связано: unix.stackexchange.com/questions/25063/   -  person Ciro Santilli 新疆再教育营六四事件ۍ    schedule 29.10.2015


Ответы (3)


Взгляните на fbgrab, приложение, которое делает именно это (сохраняет содержимое фреймбуфера в формате png).

person Anders Holmberg    schedule 08.12.2009
comment
Я попробовал fbgrab, но он не поддерживает низкую разрядность. Для моего устройства разрядность равна 8. :( Однако я посмотрел на fbshot - sfires.net/fbshot.fbgrab основан на fbshot и поддерживает 8-битную глубину, fbshot работает просто отлично. - person waffleman; 28.12.2009

Вы можете просто захватить фреймбуфер в файл и открыть его в любой программе просмотра необработанных изображений или попробовать в Интернете, например: https://rawpixels.net/

cat /dev/fb0 > fbdump
person Premjith    schedule 11.02.2020
comment
Этот онлайн-конвертер у меня не работал, но здесь я нашел Perl-скрипт, который прекрасно выполнил преобразование: cnx-software.com/2010/07/18/how-to-do-a-framebuffer-screenshot - person Georg P.; 10.05.2020
comment
Нормально ли получить несколько мегабайт всего нулевого содержимого таким способом дампа /dev/fb0 ? - person matanster; 20.05.2020

Это может быть невозможно/легко сделать напрямую с помощью ImageMagick.

Документация ядра Linux 4.2 https://github.com/torvalds/linux/blob/v4.2/Documentation/fb/api.txt#45 говорит:

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

Форматы описываются типами кадрового буфера и визуальными элементами. Некоторым визуальным элементам требуется дополнительная информация, которая хранится в полях информации о экране переменной bits_per_pixel, оттенков серого, красного, зеленого, синего и прозрачности.

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

Далее следует список визуалов и типов, но описания мне недостаточно, чтобы сразу понять точные форматы.

Но вполне вероятно, что это может быть не тот формат, который ImageMagick будет понимать напрямую, или, по крайней мере, вам придется выяснить используемый формат, чтобы выбрать параметры ImageMagick.

person Ciro Santilli 新疆再教育营六四事件ۍ    schedule 29.10.2015