资源简介

在terminal里写framebuffer显示一张32位/24位/16位jpg图片

资源截图

代码片段和文件信息

/*
 * ===========================================================================
 *
 *       Filename:  test.c
 *
 *    Description:  
 *
 *        Version:  1.0
 *        Created:  03/26/2012 01:55:10 PM
 *       Revision:  none
 *       Compiler:  gcc
 *
 *         Author:  Johann (smith) hcywcx@gmail.com
 *        Company:  
 *
 * ===========================================================================
 */

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

#define FB_DEV “/dev/fb0“

void RGB888toRGB32(unsigned int width unsigned char *inbuffer unsigned char * outbuffer);
unsigned short  RGB888toRGB565(unsigned char redunsigned char green unsigned char blue);
int fb_pixel(void *fbmem int width int height int x int y unsigned short color);

void RGB888toRGB32(unsigned int width unsigned char *inbuffer unsigned char *outbuffer)
{
     unsigned int i;
 
     for (i=0; i <  width; i++)
     {
 /* RED */
         outbuffer[(i<<2)+0] = inbuffer[i * 3 + 2];
 /* GREEN */
         outbuffer[(i<<2)+1] = inbuffer[i * 3 + 1];
 /* BLUE */
         outbuffer[(i<<2)+2] = inbuffer[i * 3];
         /* ALPHA */
         outbuffer[(i<<2)+3] = ‘\0‘;
     }
}

unsigned short RGB888toRGB565(unsigned char red unsigned char green unsigned char blue)
{
unsigned short  B = (blue >> 3) & 0x001F;
unsigned short  G = ((green >> 2) << 5) & 0x07E0;
unsigned short  R = ((red >> 3) << 11) & 0xF800;
return (unsigned short) (R | G | B);
}

int fb_pixel(void *fbmem int width int height int x int y unsigned short color)
{
if ((x > width) || (y > height)) return (-1);
unsigned short *dst = ((unsigned short *) fbmem + y * width + x);
*dst = color;
return (0);
}

int main(int argc char *argv[])
{
FILE *jpgfile;
int fbdev;
char *fb_device;
unsigned char *fbmem;
unsigned short color;
unsigned char *buffer *outbuffer;
unsigned int s

评论

共有 条评论