在Linux 控制台下使用libjpeg 显示JPEG 图像在framebuffer 上 1、引言 通常情况下,在Linux控制台下是无法查看图像文件的,要想查看图像文件,比如要查看JPEG格式的图像文件,可能必须启动X-Windows,通过GNOME 或者KDE 之类的桌面管理器提供的图像查看工具查看图片内容
那么,能不能有办法在控制台下面简单地浏览图像内容呢
实际上,这是完全可以的
在Linux 下有一个名为zgv 的看图软件就是工作在控制台下的
不过,由于它所使用的底层图形库svgalib 已经是一个比较“古老”的图形库了,所以现在知道 zgv 的人并不是很多,用的人就更少了
目前 Linux 上的底层图形支持通常是由Framebuffer 提供的,因此,作者试图在本文中说明如何通过Framebuffer 和 libjpeg 在控制台上显示JPEG 图像
需要说明的是,本文中所编写的程序 fv 并非 zgv 的替代品,而只是一个出于验证想法的简单程序(fv 的含义是Framebuffer Vision)
本文将先对 Framebuffer 和 libjpeg 的编程做一个简略的说明,然后再给出程序 fv的具体实现
2、Framebuffer 介绍 Framebuffer 在Linux 中是作为设备来实现的,它是对图形硬件的一种抽象[1],代表着显卡中的帧缓冲区(Framebuffer)
通过Framebuffer 设备,上层软件可以通过一个良好定义的软件接口访问图形硬件,而不需要关心底层图形硬件是如何工作的,比如,上层软件不用关心应该如何读写显卡寄存器,也不需要知道显卡中的帧缓冲区从什么地址开始,所有这些工作都由Framebuffer 去处理,上层软件只需要集中精力在自己要做的事情上就是了
Framebuffer 的优点在于它是一种低级的通用设备,而且能够跨平台