linux嵌入式arm基础笔记6之bmp图片格式及其他小汇集

嵌入式其他笔记汇集

insmod 驱动名字 安装驱动
rmmod 驱动名字 卸载驱动
lsmod 查看已安装的驱动

vi /usr/include/linux/input.h查看输入设备描述
插入printf打印去检查代码缺失错误
sudo ifconfig eth0 192.168.1.xxx修改ip

Ubuntu 手册 man
(1)命令
(2)系统函数
(3)库函数
gcc编译:gcc 要编译的文件名.c -o 编译后的可执行文件名
交叉编译:arm-linux-gcc main.c -o main
gcc编译文件执行./main
交叉编译文件需要传输到开发板执行

0.文件的基本操作
打开 关闭 写操作 读操作
open close write read
函数作用,函数参数,函数返回值

1.包含头文件
#include

2.gcc编译执行
gcc -o build 001.c
./build

3
:set nu 显示行号

4.man查看函数
man 3 printf

5.拷贝字符数组10个数据用以下方式
unsigned char buf[10];
unsigned char sensor_buf[100];
memcpy(buf,sensor_buf,10*sizeof(unsigned char));

  1. cd / 进入根目录
    cd ~ 进入家目录
    cd
    cd … 返回上一级目录
    cd - 返回上一次目录

  2. ls -a 罗列全部文件(包含隐藏文件)
    ls -l 罗列文件信息
    r 读
    w 写
    x 可执行

  • 没有权限

8.mkdir 创建目录
gedit 创建文件
touch 创建文件
vi 要创建或者已经存在的文件名
i a 进入编辑模式
esc退出编辑模式
:wq保存退出 q!强制退出

9.rm 删除文件名(路径)
rm 文件名(路径) rf 删除文件夹
cp 拷贝的文件(路径) 目的地(路径)
mv 剪切的文件(路径) 目的地(路径)
重命名

10.cat查看文件
pwd查看当前绝对路径
chmod 文件权限 文件名

11.文件压缩与解压
tar -zcvf bmp.tar.gz bmp.c
tar -zxvf bmp.tar.gz
z压缩格式
c压缩
x解压
v过程可见
f文件

tar命令
  解包:tar -zxvf FileName.tar
  打包:tar -czvf FileName.tar DirName

gz命令
  解压1:gunzip FileName.gz
  解压2:gzip -d FileName.gz
  压缩:gzip FileName.tar.gz 和 .tgz
  解压:tar -zxvf FileName.tar.gz
  压缩:tar -zcvf FileName.tar.gz DirName
压缩多个文件:tar -zcvf FileName.tar.gz DirName1 DirName2 DirName3 …

bz2命令
  解压1:bzip2 -d FileName.bz2
  解压2:bunzip2 FileName.bz2
  压缩: bzip2 -z FileName.tar.bz2
  解压:tar jxvf FileName.tar.bz2
  压缩:tar jcvf FileName.tar.bz2 DirName

Z命令
  解压:uncompress FileName.Z
  压缩:compress FileName.tar.Z
  解压:tar Zxvf FileName.tar.Z
  压缩:tar Zcvf FileName.tar.Z DirName

zip命令
  解压:unzip FileName.zip
  压缩:zip FileName.zip DirName

=======================================================
BMP(全称Bitmap)是Windows操作系统中的标准图像文件格式,可以分成两类:设备相关位图(DDB)和设备无关位图(DIB),使用非常广。它采用位映射存储格式,除了图像深度可选以外,采用其他任何压缩,因此,BMP文件所占用的空间很大。BMP文件的图像深度可选16bit、24bit及256bit。BMP文件存储数据时,图像的扫描方式是按从左到右、从下到上的顺序。

设备相关位图 DDB(Device-Dependent-Bitmap)
DDB不具有自己的调色板信息,他的颜色模式必须与输出设备相一致。如:在256色以下的位图中存储的像素值是系统调色板的索引,其颜色依赖于系统调色板。由于DDB高度依赖输出设备,所以DDB只能存在于内存中,它要么在视频内存中,要么在系统内存中。
设备无关位图DIB(Device-Independent-Bitmap)
DIB具有自己的调色板信息,他可以不依赖系统的调色板。由于他不依赖于设备,所以通常用它来保存文件,如.b格式的文件就是DIB.

BMP格式的文件从头到尾依次是如下信息:
bmp文件头(bmp file header):共14字节;
位图信息头(bitmap information):共40字节;
调色板(color palette):可选;
位图数据(颜色值rbg)

54个字节详解:
Bmp文件头:14字节,下面逐个解释。
0-1:bfType,表示文件类型,BMP格式的文件这两个字节是0x4D42,10进制就是19778,字符显示就是‘BM’;
2-5:bfSize,表示文件的大小,这里的是0x0004B436,十进制是308278,也就是301kb,检查文件信息,验证正确;
6-7:bfReserved1,保留位,必须设置为0;
8-9:bfReserved2,保留位,必须设置为0;
a-d:bfOffBits,4字节的偏移,表示从文件头到位图数据的偏移,这里是0x00000436,十进制是1078;

位图信息头的详解:
位图信息头一共40字节,包含如下内容:
biSize:4字节,信息头的大小,即40;
biWidth:4字节,以像素为单位说明图像的宽度;
biHeight:4字节,以像素为单位说明图像的高度,同时如果为正,说明位图倒立(即数据表示从图像的左下角到右上角),
biPlanes:2字节,为目标设备说明颜色平面数,总被设置为1;
biBitCount:2字节,说明比特数/像素数,值有1、2、4、8、16、24、32;
biCompression:4字节,说明图像的压缩类型,最常用的就是0(BI_RGB),表示不压缩;
biSizeImages:4字节,说明位图数据的大小,当用BI_RGB格式时,可以设置为0;
biXPelsPerMeter:表示水平分辨率,单位是像素/米,有符号整数;
biYPelsPerMeter:表示垂直分辨率,单位是像素/米,有符号整数;
biClrUsed:说明位图使用的调色板中的颜色索引数,为0说明使用所有;
biClrImportant:说明对图像显示有重要影响的颜色索引数,为0说明都重要;

举例:
24位色图,按照BGR的顺序排列
位图数据排列还有一个规则,就是对齐。
Windows默认的扫描的最小单位是4字节,如果数据对齐满足这个值的话对于数据的获取速度等都是有很大的增益的。因此,BMP图像顺应了这个要求,要求每行的数据的长度必须是4的倍数,如果不够需要进行比特填充(以0填充),这样可以达到按行的快速存取。这样的话,位图数据的大小就不一定是宽x高x每像素字节数了,因为每行还可能有0填充。

你可能感兴趣的:(linux嵌入式arm基础笔记6之bmp图片格式及其他小汇集)