LINUX.ORG.RU

вывод изображений в фреймбуферскую консоль


1

1

Если кто знает или сталкивался с выводом изображений (например формата jpg) в фреймбуферскую консоль. Интересует не описание программ, а теория с практическими примерами кода. Сейчас вот читаю:

http://habrahabr.ru/post/164635/
Но там как я понял рассказано о написании модуля ядра, но насколько я знаю в ядре ведь есть драйвер vesa через который и реализован фреймбуфер. Я просто хочу использовать стандартный драйвер ядра для вывода изображения.
Если кто занимался этим посоветуйте пожалуйста материал где про это можно почитать на русском языке. Прошу строго не ругать по поводу что надо в начале самому искать в интернете, я искал но более менее понятного материала не нашёл.
Скачал исходники fbi долго разбирался но так ничего и не понял, причём в графических консолях - например в konsole, fbi не работает. За помощь заранее благодарен!

★★

import struct
import math
import random

width = 1376
height = 768
fb = open('/dev/fb0', 'wb')


def putpixel(x,y,c):
    ofs = 4*(width*y + x)
    fb.seek(ofs)
    fb.write(struct.pack("<BBB", c[0], c[1], c[2]))

xb = random.randrange(3, 15)
yb = random.randrange(3, 15)
xc = random.randrange(0, 1000) / 1000.0 * math.pi * 2
yc = random.randrange(0, 1000) / 1000.0 * math.pi * 2

for t in range(10000):
    x = 350 * math.sin(2 * math.pi * t / 10000 * xb + xc)
    y = 350 * math.sin(2 * math.pi * t / 10000 * yb + yc)
    putpixel(int(1376/2 + x), int(768/2 + y), (255,255,255))

Так достаточно ясно?

i-rinat ★★★★★ ()
Последнее исправление: i-rinat (всего исправлений: 1)
Ответ на: комментарий от i-rinat

не совсем понятно, разбираюсь сейчас

это на Си????

v4567 ★★ ()

Если кто знает или сталкивался с выводом изображений (например формата jpg) в фреймбуферскую консоль.
причём в графических консолях - например в konsole, fbi не работает.

Естественно! Эмуляторы терминалов не имеют ничего общего с фреймбуффером. Нет, Вы, конечно, можете воспользоваться эмуляцией графического векторного терминала tektronix 4014 в xterm, но это ни разу не то, чем Вы интересуетесь.

Вам нужно тупо записать в /dev/fb0 несжатое изображение в формате BGR (набор бит, соответствующий синему пикселю, затем зелёному, затем красному, и так далее для всех пикселей, слева направо, затем сверху вниз) с количеством бит на пиксель, соответствующим свойствам фреймбуффера. Возможно, Вас заинтересует утилита convert из набора ImageMagick с выводом в формат «bgr:».

AITap ★★★★★ ()
Ответ на: комментарий от KJIayC

Вам нужно тупо записать в /dev/fb0 несжатое изображение в формате BGR (набор бит, соответствующий синему пикселю, затем зелёному, затем красному, и так далее для всех пикселей, слева направо, затем сверху вниз) с количеством бит на пиксель, соответствующим свойствам фреймбуффера. Возможно, Вас заинтересует утилита convert из набора ImageMagick с выводом в формат «bgr:».

это понятно, только вот не совсем понятно как это реализовать на Си, вот с этим и разбираюсь

и тогда второй момент: получается что любой формат необходимо преобразовывать в bgr????? и в fbi то же все форматы преобразовываются в bgr?????

это на python

спасибо за подсказку, к сожалению python я не знаю

v4567 ★★ ()
Ответ на: комментарий от i-rinat

Этому, кхм, товарищу ничего не ясно. Ему надо, чтобы за него сделали всё, от начала до конца, при этом он неспособен поставить задачу, и даже тупо объяснить, чего ему нужно, даже на уровне нуба.

anonymous ()
Ответ на: комментарий от i-rinat

Ну и cat /dev/urandom >/dev/fb0. Программасты любят наворотить.

anonymous ()
Ответ на: комментарий от SZT

Лол, он даже питон от c отличить не может, а ты ему mmap().

anonymous ()
Ответ на: комментарий от anonymous

Лол, он даже питон от c отличить не может, а ты ему mmap().

Можно подумать, ты родился со знанием mmap().

i-rinat ★★★★★ ()
Ответ на: комментарий от i-rinat

Можно подумать, и ты родился со знанием mmap().

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