Framebuffer读取bmp格式转RGB565

(1)开发板挂载优盘方法:

ls /dev
mkdir /mnt/usb
mount /dev/sda1 /mnt/usb
cp /mnt/usb/......
umount /mnt/usb

(2)framebuffer程序: bpp像素深度,常见的有bpp24中rgb888和rgb666,一个像素三个字节;bpp16中rgb565,一个像素两个字节。rgb565,r.offset =11,g.offset=5,b.offset = 0; rgb666, r.offset = 16, g.offset = 8, b.offset = 0。

// 本文件用来解析BMP图片,并且显示到fb中
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
#include <linux/fb.h>
#include <sys/ioctl.h>
#include <sys/mman.h>


// 宏定义
//#define FBDEVICE	"/dev/fb0"
// 开发板
//#define WIDTH		1024	
//#define HEIGHT		768
 

//我们规定最大支持1920*1080这么大的图片,BPP最多24
#define BMP_MAX_RESOLUTION		(1920*1080)
#define BMP_BUF_SIZE			(BMP_MAX_RESOLUTION*3)

char rgb_buf[BMP_BUF_SIZE];          // 全局变量
unsigned char *pfb = NULL;			// pfb指向framebuffer内存地址首地址
int fbfd = -1;						// 打开fb后得到的fd

struct fb_fix_screeninfo finfo;
struct fb_var_screeninfo vinfo;

// 结构体用来封装一个图片的各种信息
typedef struct pic_info
{
	char *pathname;			// 图片在文件系统中的路径名+文件名
	unsigned int width;		// 图片分辨率之宽
	unsigned int height;	// 图片分辨率之高
	unsigned int bpp;		// 图片bpp
	char *pData;			// 指向图片有效数据存储的buf数据
}pic_info;

// BMP 文件头
typedef struct  
{  
//  unsigned short      bfType;  			// 2
    unsigned long    	bfSize; 			// 4 
    unsigned short    	bfReserved1;  
    unsigned short    	bfReserved2;  
    unsigned long    	bfOffBits;  
} ClBitMapFileHeader;

// BMP 信息头
typedef struct  
{  
    unsigned long  		biSize;   
    long   				biWidth;   
    long   				biHeight;   
    unsigned short   	biPlanes;   
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值