毕业论文开发语言企业开发JAVA技术.NET技术WEB开发Linux/Unix数据库技术Windows平台移动平台嵌入式论文范文英语论文
您现在的位置: 毕业论文 >> linux >> 正文

将一个BMP文件转化为二进制文件,并且存在一个数组中代码

更新时间:2013-5-13:  来源:毕业论文

将一个BMP文件转化为二进制文件,并且存在一个数组中怎样子将一个BMP图片用程序转化为一个文本文件,并且存在一个数组中,我知道这个有些程序可惜实现,但现在我的需要自己写个程序完成它

之前在做uboot里的splash image,需要将bmp文件转换为一个数组,下面是我写的一个,亲测可用,生成文件之后自己加上数组的名字就好,用法 ./xx.out xx.bmp xx.c 接待方案 

#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
        int i, fd, ret, fd_out;
        unsigned char buf[16] = "0";
        unsigned char buf_out[6] = "0";

        if (argc != 3) {
                printf("usage: ./bmp_2_c a.bmp a.c\n");
                exit(-1);
        }  

        fd = open(argv[1], 0666, O_RDWR);

        if (fd < 0) {
                perror("open error");
                exit(-1);
        }  

        fd_out = open(argv[2], O_RDWR | O_CREAT, 0644);

        if (fd_out < 0) {
                perror("open error");
                exit(-1);
        }  

while ((ret = read(fd, buf, 16)) != 0) {
                for (i = 0; i < ret; i++) {
                        snprintf(buf_out, 6, "0x%x, ", buf[i]);
                        if (buf[i] >= 0x0 && buf[i] <= 0xf) {
                                buf_out[3] = buf_out[2];
                                buf_out[2] = '0';
                                buf_out[4] = ',';
                        }  
                        buf_out[5] = ' ';
                        write(fd_out, buf_out, 6);
                        memset(buf_out, 0, sizeof(buf_out));
                }
                write(fd_out, "\n", 1);

        }

        close(fd);
        close(fd_out);
        return 0;
}
这个很简单,搞清楚点阵的顺序即可,剩下的就是把一个像素的RGB三个字节转为Base64就OK了,此乃最最简单的图像解码。BMP的文档到处都是。

设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优尔论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。