当前位置:  技术问答>linux和unix

字符界面下显示图片

    来源: 互联网  发布时间:2017-02-22

    本文导语:  有一个问题一直在我的心中徘徊,那就是Linux的字符界面下有没有显示图片的能力,比如.JPG或者GIF文件。图形界面太笨重和占用资源了。 | 那个是boot splash吧。 另外Linux curses满足需求吗?终端图形库...

有一个问题一直在我的心中徘徊,那就是Linux的字符界面下有没有显示图片的能力,比如.JPG或者GIF文件。图形界面太笨重和占用资源了。

|

那个是boot splash吧。
另外Linux curses满足需求吗?终端图形库。
或者楼主看看这篇博客:在linux终端模式下显示JPEG格式图片(参考了其他资料)

|
可通过往framebuffer(帧缓冲)里写数据实现图形显示,因为这个缓冲是储存显示屏显示的图形数据的。

|

动画?不都是一张一张的图片切换出来的吗?
你可以用这个程序试试:

#include 
#include 
#include 
#include   
#include  
#include 
#include 
#include 
#include 
#include   
static __u16           rr[256],gg[256],bb[256];
static struct          fb_var_screeninfo fb_vinfo;
static struct          fb_fix_screeninfo fb_fix;
static struct          fb_cmap oldcmap = {0,256,rr,gg,bb} ;

int main()
{
    clock_t     start,end; 
    int color = 255, fd, m,n,w, h, width, height;
    unsigned char *p,*dest, *fb_mem, *rgba;
    /* 打开图形输出设备 */
    if ((fd = open("/dev/fb0", O_RDWR)) == -1)
        return -1; 
    /* 获取相关信息 */
    ioctl(fd, FBIOGET_VSCREENINFO, &fb_vinfo);
    ioctl(fd, FBIOGET_FSCREENINFO, &fb_fix);
    
    if (fb_vinfo.bits_per_pixel==8)
        ioctl(fd, FBIOGETCMAP, &oldcmap);
        
    /* 保存屏幕的宽度和高度(单位为:像素) */
    width = fb_vinfo.xres;
    height = fb_vinfo.yres;
    /* 映射帧缓存至内存空间 */
    fb_mem = mmap(NULL,fb_fix.smem_len, PROT_READ|PROT_WRITE,MAP_SHARED, fd, 0);/* 映射显存 */
    /* 分配内存空间,每个像素点占用用4个sizeof(unsigned char)的内存空间,共有width*height个像素点 */
    rgba = (unsigned char*)calloc(width*height*4, sizeof(unsigned char));
    
    color = 255;
    start=clock();
    while(color--)
    {
        dest = fb_mem; /* 循环一次,指针重新指向帧缓冲的首地址 */
        /* 先生成图形数据,这只是简单的生成,复杂的图形可以自己写算法生成 */
        for (h = 0; h 

    
 
 

您可能感兴趣的文章:

  • crtl+alt+F1一直到F6都可以从图形到字符,那么,这和纯粹的字符界面有什么区别,也就是该/etc/initab的值为3后进入的字符界面?
  • flyingcrean,怎样快速切换字符界面与X Window图形界面?
  • linux 启动只能进入图形界面,怎么让起动可以进入字符界面?
  • 由于显示器性能,无法启动图形界面,如何更改为字符界面?
  • 图形界面转到字符界面的问题
  • 新手问题,在linux下c/c++开发是在图形界面下还是字符界面下进行?
  • 如何在字符界面下更改linux的X图形界面?
  • ★★★ 如何从字符界面切换到图形界面? ★★★
  • 装好linux后每次启动都自动进入字符界面,请问在哪里可以修改启动后进入图形界面?
  • LINUX安装时的字符界面是用什么界面库写的?
  • ubuntu中怎么从图形界面进入字符界面
  • 怎么样不从图形界面启动而字符黑界面启动?
  • 为什么在图形界面下执行一个可执行程序,老是说找不到该程序,而在字符界面下却ok?
  • 如何回到字符界面
  • Ubuntu11.04版本进入字符界面问题
  • 我安装redhat时,把默认登陆设成了图形界面登陆,不知道在什么地方可以修改成为启动后为字符界面登陆
  • 我写了一个qt的程序,为什么在图形界面下正常,在字符界面下就提示:cannot connect to X server ?
  • 我在VMWARE里安装的Linux9.0总是无法进入字符界面,直接就进入了图形界面里
  • Redhat配置为图形启动,结果图形界面没有配置好,怎么强制它从字符界面登录?
  • 如何把linux下面的一个图形化界面的应用程序改成字符界面?
  • 如何在windows下的DOS窗口中显示utf-8字符(CMD命令提示符终端显示utf-8字符)
  • 如何使GDB显示完整的字符串变量,当字符串比较长时。
  • windows下cmd命令行显示UTF8字符设置(CHCP命令)
  • 为什么我的JBuilder5编辑器光标显示位置与字符显示位置不一致?如何设置?
  • Linux/CentOS/fedora下vim显示的字符编码设置
  • 请问从屏幕上输入字符时,能显示别人看不出的原字符,也就是怎么实现加密。这程序该怎么写,谢谢。
  • 字符串中带有空格,在jsp的text框里显示的时候会把空格后面的字符串都删掉
  • 在<textarea>中输入的字符串 getString 是有换行符的,但用sendmail发送这个getString 后,在邮件中显示的这个字符串里的所有换行符全不
  • 有个JLabel比如说大小为(200,100),而又有个字符串,其长度超过200,给如何在JLabel上显示完字符串的内容呢
  • 终端中的中文字符无法显示
  • 有个JLabel比如说大小为(200,100),而又有个字符串,其长度超过200,给如何在JLabel上显示完字符串的内容呢 iis7站长之家
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • C++ Strings(字符串) 成员 size():返回字符串中字符的数量
  • 关于字符串的操作,我想得到字符串的长度,和他开始两位组成的新的字符串,例如::
  • C++ Strings(字符串) 成员 c_str():将字符串以C字符数组的形式返回
  • 请问怎样判断一个字符是中文字符还是英文字符?(空)
  • C++ Strings(字符串) 成员 find():在字符串中查找字符
  • C语言实现输入一个字符串后打印出该字符串中字符的所有排列
  • C++ Strings(字符串) 成员 end():返回一个迭代器,指向字符串的末尾。(最后一个字符的下一个位置)
  • 用Java正则去掉字符串中重复出现的字符
  • C++ I/O 成员 ignore():读取字符并忽略指定字符
  • 字符字符串加法问题?
  • C++ Strings(字符串) 成员 copy():将内容复制为一个字符数组
  • 怎样去掉字符串中的tab字符?
  • C++ Strings(字符串) 成员 rbegin():返回一个逆向迭代器,指向最后一个字符
  • 如何将一个双引号”放在一个字符串中,就是在字符串中如何转义一个双引号。谢谢!
  • C++ Strings(字符串) 成员 empty():如果字符串为空,返回真
  • php判断字符串在另一个字符串位置的方法
  • C++ Strings(字符串) 成员 begin():返回一个迭代器,指向第一个字符
  • 请教,有关16进制字符串形成2进制字符串的问题!
  • C++ Strings(字符串) 成员 data():返回内容的字符数组形式
  • 请问如何判断字符串中的字符在a~z之间
  • C++ Strings(字符串) 成员 length():返回字符串的长度
  • jquery 删除字符串最后一个字符的方法解析


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3