можно отобразить JPG или PNG в фреймбуфером (/ DEV / FB *)?


19

Я знаю , что могу захватить видеобуфер в Linux , используя что - то вроде cp /dev/fb0 ~/myimageи повторное отображение , что по справляясь обратно на устройство , как так cp ~/myimage /dev/fb0. В каком формате находятся данные изображения кадрового буфера? и как бы я идти об отображении заранее сделал изображение (JPG, PNG) в фреймбуфером? Могу ли я конвертировать в этот формат , используя ImageMagick?

пс Im используя Raspberry Pi работает raspbian.



Обновление 11-12-2012

Я закончил с использованием Pygame для отображения изображений в моем приложении. Не уверен , если это использует фрейм-буфер для отображения изображений. Но она отвечает моим потребностям очень хорошо.

Ответы:


8

Вы пробовали Fbida ?

fbidaсодержит fbiсредство просмотра изображений для кадрового буфера.

Ссылка на fbiстраницы человека - http://manpages.ubuntu.com/manpages/lucid/man1/fbi.1.html

PS - я не уверен, будет ли это работать в Raspbian.


К сожалению , это не представляется возможным , чтобы предотвратить «FBI» от отображения строки состояния в нижней части экрана. Это немного остановит всю работу для различных приложений ...
Жюль

3
@Jules О Debian 8 (тестирование), есть -noverboseвариант , который позволяет отображать только само изображение; Однако, это не документировано на странице человека, но только в «использования:» для него.
Аббафей

Это работает? Ранее я построил копию из источника на веб - странице автора, и даже есть возможность, но вариант, похоже , не на самом деле делать что - либо вообще в этой версии.
Жюль

@Jules -noverboseработает для меня, используя fbiraspbian, когда я установил его с помощью apt-get install fbi.
Д. Вудс


2

Какой формат данных фреймбуфера изображения в?

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

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

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

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

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


1
@Downvoters пожалуйста , объясните , так что я могу научиться и улучшить информацию. Я никогда не отомщу. Благодарю.
Чиро Сантилли新疆改造中心法轮功六四事件

1

Если вы хотите cp /dev/fb0 ~/myimage, изображение должно содержать только информацию пикселей, и порядок должен быть правильным ( RGB, BGR, RGBA, ARGB...)

Я хочу сделать это тоже, но не нашел подходящий инструмент, поэтому я использую Python , чтобы помочь мне заранее сделало изображение. Вы можете попробовать это .



0

Посмотрите на /usr/include/linux/fb.h в структурах как fb_var_screeninfo. Могут быть различные глубины цвета и форматы. Я вижу 16 бит / пиксель путь слишком часто, прямо сейчас у меня есть 32. Тип fbset сам по себе, и он будет отображать текущие настройки. Который почти наверняка будет одна из записей в /etc/fb.modes.

upstairs# fbset

mode "1920x1080"
    geometry 1920 1080 1920 1080 32
    timings 0 0 0 0 0 0 0
    rgba 8/16,8/8,8/0,8/24
endmode

Imagemagick может работать, если вы можете сделать это точно соответствовать режиму вам нужно. Я бы, наверное, написать что-то в C, дюжины линий, заходящих libjpeg или Libpng может распаковывать изображение в массив памяти. Ваш бит / цвет и т.д. должен соответствовать или вам нужно написать что-то, чтобы преобразовать его. Хороший опыт.

Кроме того, вместо чтения / записи / dev / fb0 в виде файла, откройте () его, чтобы получить дескриптор файла, затем mmap (), чтобы вы работали с указателем на память. Это гораздо быстрее при выполнении переводов, по крайней мере в 10 раз.

Но для размещения изображения на экране, я просто установить в IV квартале. Затем нажмите F1 для получения справки, но при отображении изображения знак «х» наполовину будет записан в корневое окно, если вы этого хотите. Или просто установить его в качестве обоев в настройках Desktop и придумают при каждой загрузке.


Минца ARGB , по- видимому (Raspbian). Я начал с цветов HTML-типа из палитры цветов GIMP, взял 4 попытки, чтобы сделать это правильно.
Алан Кори
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.