如何在帧缓冲区(/ dev / fb *)中显示JPG或PNG?


19

我知道我可以使用类似的东西捕获Linux中的帧缓冲区,cp /dev/fb0 ~/myimage并通过像这样回复到设备来重新显示它cp ~/myimage /dev/fb0。帧缓冲图像数据采用什么格式?以及如何向帧缓冲区显示预制图像(jpg,png)?我可以使用imagemagick转换为这种格式吗?

ps我使用树莓派运行树莓派。



更新11-12-2012

我最终使用pygame在我的应用程序中显示图像。不知道这是否使用帧缓冲区显示图像。但这很好地满足了我的需求。

Answers:


8

您尝试过Fbida吗?

fbida包含fbi,用于帧缓冲区的图像查看器。

链接到fbi手册页-http://manpages.ubuntu.com/manpages/lucid/man1/fbi.1.html

PS-我不确定它是否可以在Raspbian中使用。


不幸的是,似乎无法阻止'fbi'在屏幕底部显示状态栏。这是一个有点用于各种应用的搅局者...
朱尔斯·

3
@Jules在Debian 8(测试)上,有一个-noverbose选项可以使它仅显示图像本身。但是,这没有在手册页中记录,而是仅在“用法:”中进行了说明。
Abbafei 2013年

它行得通吗?我以前在作者的网页上从源代码构建了一个副本,该副本确实具有该选项,但是该选项在该版本中似乎根本没有任何作用。
2013年

-noverbose我使用时fbi,@ Jules在raspbian上为我工作apt-get install fbi
D. Woods


2

帧缓冲图像数据采用什么格式?

Linux内核4.2文档https://github.com/torvalds/linux/blob/v4.2/Documentation/fb/api.txt#45说:

像素以硬件相关格式存储在内存中。应用程序需要注意像素存储格式,以便以硬件期望的格式将图像数据写入帧缓冲存储器。

格式由帧缓冲区类型和视觉效果描述。某些视觉效果需要其他信息,这些信息存储在可变屏幕信息bits_per_pixel,灰度,红色,绿色,蓝色和transp字段中。

视觉描述了如何对颜色信息进行编码和组合以创建宏像素。类型描述了宏像素如何存储在内存中。支持以下类型和视觉效果。

下面是视觉效果和类型的列表,但是该描述不足以让我立即了解确切的格式。


1
@Downvoters请解释,以便我可以学习和改进信息。我从不报复。谢谢。
Ciro Santilli新疆改造中心法轮功六四事件

1

如果需要cp /dev/fb0 ~/myimage,图像应仅包含像素信息,并且顺序应正确(RGB, BGR, RGBA, ARGB...)

我也想这样做,但是没有找到合适的工具,所以我使用python来帮助我预制图像。你可以试试这个



0

在类似fb_var_screeninfo的结构中查看/usr/include/linux/fb.h。可以有多种颜色深度和格式。我经常看到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读/写为文件,不如对其进行open()获取文件描述符,然后对它进行mmap()获取,这样您就可以使用指向内存的指针。进行传输要快得多,至少10倍。

但是为了在屏幕上放置图像,我只安装了qiv。然后按F1寻求帮助,但是如果您要的是在显示图像时将x永久写入根窗口。或者只是在“桌面偏好设置”中将其设置为墙纸,它将在每次启动时显示。


我的ARGB显然是(Raspbian)。我从GIMP颜色选择器开始使用HTML类型的颜色,进行了4次尝试以使其正确。
艾伦·科里
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.