чи можу я відобразити JPG або PNG до фреймбуфера (/ dev / fb *)?


19

Я знаю, що можу захопити фреймбуфер в Linux, використовуючи щось на зразок cp /dev/fb0 ~/myimageі повторно відобразити це, повернувшись назад до пристрою cp ~/myimage /dev/fb0. У якому форматі містяться дані зображення фреймбуфера? і як би я почав показувати попередньо зроблене зображення (jpg, png) до фреймбуфера? Чи можна конвертувати у цей формат за допомогою Imagemagick?

ps Im, використовуючи малину pi, що працює з raspbian.



Оновлення 11-12-2012

У кінцевому підсумку я використовував пігаму для відображення зображень у своїй програмі. Не впевнений, що для цього використовується буфер кадру для відображення зображень. Але він цілком відповідає моїм потребам.

Відповіді:


8

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

fbidaмістить fbi, переглядач зображень для кадру кадрів.

Посилання на fbiсторінку людини - http://manpages.ubuntu.com/manpages/lucid/man1/fbi.1.html

PS - Я не впевнений, чи буде це працювати в Raspbian.


На жаль, не здається можливим запобігти відображенню "fbi" рядка стану в нижній частині екрана. Це трохи шоустоппер для різних застосувань ...
Жуль

3
@Jules На Debian 8 (тестування) є -noverboseпараметр, який змушує відображати саме зображення; однак це не зафіксовано на сторінці "man", а є лише в "use:" для цього.
Аббафей

Це працює? Раніше я створив копію з джерела на веб-сторінці автора, і у неї був такий варіант, але цей варіант, схоже, насправді нічого не робив у цій версії.
Жуль

@Jules -noverboseпрацює для мене, використовуючи fbiна raspbian, коли я встановлював його за допомогою apt-get install fbi.
Д. Вудс


2

У якому форматі містяться дані зображення фреймбуфера?

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

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

Формати описуються буферами кадру та візуальними зображеннями. Деякі візуальні зображення потребують додаткової інформації, яка зберігається у змінній екрані bits_per_pixel, полів сірого, червоного, зеленого, синього та передачі.

Наочні зображення описують, як кольорова інформація кодується та збирається для створення макропікселів. Типи описують, як макропікселі зберігаються в пам'яті. Наступні типи та візуальні зображення підтримуються.

Перелік візуальних зображень та типів випливає, але опису мені недостатньо, щоб відразу зрозуміти точні формати.


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

1

Якщо ви хочете cp /dev/fb0 ~/myimage, зображення має містити лише інформацію про пікселі, і порядок повинен бути правильним ( RGB, BGR, RGBA, ARGB...)

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


0

Якщо ви зможете встановити їх, fbcatстворіть зображення в ppm та fbgrabстворите png-зображення.


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 може працювати, якщо ви зможете точно відповідати потрібному вам режиму. Напевно, я б щось написав у С, десяток або близько того рядків, що називають libjpeg або libpng, можуть розпакувати зображення в масив пам'яті. Ваші біти / колір тощо повинні відповідати або вам потрібно щось написати, щоб перетворити його. Хороший досвід.

Крім того, а не читати / писати / dev / fb0 як файл, відкрийте () його, щоб отримати дескриптор файлу, а потім mmap () це, щоб ви працювали з покажчиком на пам'ять. Це набагато швидше робити трансфер, принаймні 10 разів.

Але для розміщення зображень на екрані я просто встановлюю qiv. Потім натисніть F1 для довідки, але x під час відображення зображення запише його напівперманентно у кореневе вікно, якщо це те, що ви хочете. Або просто встановіть його як шпалери в Налаштуваннях робочого столу, і він з’явиться під кожним завантаженням.


ARGB шахти, мабуть, (Raspbian). Я почав з кольорів типу HTML від вибору кольорів GIMP, провів 4 спроби, щоб правильно це зробити.
Алан Корі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.