-
大小: 29KB文件类型: .rar金币: 1下载: 0 次发布日期: 2021-05-21
- 语言: 其他
- 标签: bmp framebuffer display
资源简介
本程序中用比简单的方法来进行bmp图片的读取,并用linux 下的framebuffer来显示到屏幕上
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include “fbv.h“
int openFB(const char *name);
void closeFB(int fh);
void getVarScreenInfo(int fh struct fb_var_screeninfo *var);
void getFixScreenInfo(int fh struct fb_fix_screeninfo *fix);
int openFB(const char *name)
{
int fh;
char *dev;
if(name == NULL){
dev = getenv(“frameBUFFER“);
if(dev) name = dev;
else name = DEFAULT_frameBUFFER;
}
if ((fh = open(name O_RDWR)) == -1){
fprintf(stderr “open %s: %s\n“ name strerror(errno));
exit(1);
}
return fh;
}
void closeFB(int fh)
{
close(fh);
}
void getVarScreenInfo(int fh struct fb_var_screeninfo *var)
{
if (ioctl(fh FBIOGET_VSCREENINFO var)){
fprintf(stderr “ioctl FBIOGET_VSCREENINFO: %s\n“ strerror(errno));
exit(1);
}
}
void getFixScreenInfo(int fh struct fb_fix_screeninfo *fix)
{
if (ioctl(fh FBIOGET_FSCREENINFO fix)){
fprintf(stderr “ioctl FBIOGET_FSCREENINFO: %s\n“ strerror(errno));
exit(1);
}
}
int bmp_display(unsigned char *rgbbuffint x_size int y_sizeint*x_offsint*y_offsint bpp)
{
uint32_t offset;
uint8_t color[4];
int width = 0 height = 0;
unsigned char *tmp = (unsigned char *)(rgbbuff);
unsigned long fb_mem_offset;
unsigned long fb_mem;
struct fb_var_screeninfo var;
struct fb_fix_screeninfo fix;
int fh=-1;
fh = openFB(NULL);
int i=0j=0;
int bit4_flag = 0;
int bit2_flag = 0;
getVarScreenInfo(fh &var);
getFixScreenInfo(fh &fix);
fb_mem_offset = (unsigned long)(fix.smem_start) & (~PAGE_MASK);
fb_mem = (unsigned long int)mmap(NULL fix.smem_len + fb_mem_offset
PROT_READ | PROT_WRITE MAP_SHARED fh 0);
if (-1L == (long)fb_mem)
{
printf(“mmap error! mem:%ld offset:%ld\n“ fb_mem fb_mem_offset);
return -1;
}
width = *x_offs + x_size;
height = *y_offs + y_size;
for(i = *y_offs; i < height; i++)
{
for(j = *x_offs; j < width; j++)
{
// DBG_INFO(“i=%d--j=%d\n“i j);
switch (bpp)
{
case 1:
//DBG_INFO(“BMP BitCount is 1 \n“);
tmp[0] = (tmp[0]>>bit2_flag)&0x01;
color[0] = (uint8_t)((int)(rgbbuff) - 2*4 + tmp[0] + 0);
color[1] = (uint8_t)((int)(rgbbuff) - 2*4 + tmp[0] + 1);
color[2] = (uint8_t)((int)(rgbbuff) - 2*4 + tmp[0] + 2);
color[3] = 0x00;
offset = (j + var.xoffset) * (var.bits_per_pixel/8) + (i + var.yoffset) * fix.line_length;
memcpy((void*)(fb_mem + offset) color 4);
if(bit2_flag < 7)
{
bit2_flag ++;
}
else
{
tmp = tmp + 1;
bit2_flag = 0;
}
break;
case 4:
if(bit4_flag == 0)
{
tmp[0] = (tmp
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4434 2012-07-18 11:50 bmp\bmp_display.c
文件 4453 2012-07-18 10:28 bmp\bmp_read.c
文件 5400 2012-07-19 08:43 bmp\draw_picture.c
文件 5628 2012-07-18 15:22 bmp\draw_picture.c~
文件 1653 2012-07-19 08:57 bmp\draw_picture.h
文件 1025 2012-07-18 11:44 bmp\fbv.h
文件 54056 2007-03-06 14:39 bmp\logo24.bmp
文件 632 2012-07-19 08:06 bmp\main.c
文件 689 2012-07-18 15:18 bmp\main.c~
文件 556 2012-07-16 15:36 bmp\makefile
目录 0 2012-07-19 16:15 bmp
----------- --------- ---------- ----- ----
78526 11
- 上一篇:浮点数转换器,浮点数计算器
- 下一篇:svn hooks 全集,包含常用
相关资源
- 51+bmp180+lcd1602+proteus.zip
- VC中GDI方法在Picture控件中显示PNG、b
- BMP图像信息隐藏vc实现
- ImageList加载BMP在ListCtrl中显示的Demo
- rgb565_to_bmp
- Bmp2Tif example
- bmp图片转16进制
- bmp转jpeg源码
- 通过文件头识别文件类型
- raw转bmp文件raw2bmp
- vc 动态加载显示jpg、bmp图片
- bmp压缩jpeg源码
- vc图像编程:jpeg格式转换成bmp
- 灰度256X256_BMP图片
- 读取bmp图片文件,并获取任意一点的
- EDID修改工具
- BMP图像信息隐藏 解读
- bmp转化565或888C文件
- opengl保存bmp图片函数
- 512乘512的BMP格式的Lena图
- BMP 转 RGB YUV 工具
- jpg批量转换成bmp工具
- 气压传感器BMP180驱动stm32f103
- lena bmp格式的图像
- map2bmp.zip
- DisplayPort1.4协议 英文
- 好用的 DICOM 图片查看与转换工具
- libmp3lame.a 6-19
- 使用pnglib库将png转成bmp代码
- bmp280驱动(spi接口)
评论
共有 条评论