通过文件IO把bmp图片显示到Linux开发板的实现
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>
#define BMP_SIZE (800*480*3)
#define LCD_WRITE_SIZE (800*480)
int main(int argc, char const *argv[])
{
char bmpbuf[BMP_SIZE] = {0};
int lcdbuf[LCD_WRITE_SIZE] = {0};
int tempbuf[LCD_WRITE_SIZE] = {0};
int bmpfd, lcdfd;
int i, x, y;
bmpfd = open("/1.bmp", O_RDWR);
if (bmpfd == -1)
{
perror("打开bmp文件失败\n");
return -1;
}
lcdfd = open("/dev/fb0", O_RDWR);
if (lcdfd == -1)
{
perror("打开液晶屏文件失败\n");
return -1;
}
lseek(bmpfd, 54, SEEK_SET);
read(bmpfd, bmpbuf, BMP_SIZE);
for (i = 0; i < LCD_WRITE_SIZE; i++)
{
lcdbuf[i] = 0x00 << 24 | bmpbuf[2+3*i] << 16 | bmpbuf[1+3*i] << 8 | bmpbuf[2+3*i];
}
for (x = 0; x < 800; x++)
{
for (y = 0; y < 480; y++)
tempbuf[(479-y)*800+x] = lcdbuf[(y*800)+x];
}
write(lcdfd, tempbuf, LCD_WRITE_SIZE);
close(bmpfd);
close(lcdfd);
return 0;
}