仿照别人的程序写的bmp数据提取C代码,并将提取的数据放到txt文档中

 /*
date : 2014/06/24
designer :pengxiaoen
version : dev4.9.9.0
function :读取bmp图片的图片数据信息到文件txt中。参考了其他的程序 bmp 文件格式: 第10个字节处存放图像数据起始地址 —— 此程序中25行用到
第36h - 0436h 字节处存放调色板 —— 此程序中没有用到 *****************************************************************************************
检测数据读取:第37行替换第35行,并且屏蔽掉42行-73行 bmp_data 修改成int
发现37行打印出来的数据为1a111111.使用存储格式看.bmp的时候发现对
应的位置数据为1111111a。 因为原始程序中使用的 bmp_data 是char 型,也就是读取数据的时候是一个像素点一个
像素点的读,所以就避免了倒序的情况发生
*******************************************************************************************
*/
#include "stdio.h"
#include "FileDefine.h" main()
{
unsigned char bmp_data [pic_size];
unsigned int i , pic_data_add ; //**********************************************************
FILE *fp0 = fopen(pic_file ,"rb"); //开启图片
if(fp0==NULL)
printf("open pic_file fault !!!! \n");
else
{
printf("open pic_file sucess! \n"); fseek(fp0,10L,); // 找到图片数据存储位置地址
fread(&pic_data_add,,,fp0);
printf("\nbmp_data_begin is %.4x \n",pic_data_add );
rewind(fp0);
fseek(fp0,pic_data_add,); // 指针指向图片数据存储位置
fread(bmp_data,pic_size,,fp0); //将数据读取到数组中 //fread(bmp_data,4,1,fp0); printf("%x",bmp_data[0]) ; fclose(fp0);
}
//**********************************************************
FILE *fp1 = fopen(pic_data ,"w"); // 打开文件为存储图片数据做准备
if(fp1==NULL)
printf ("txt data file open fault !!!!!");
else
{
printf ("\ntxt data file open sucess !\n\n"); for (i=;i<pic_size;i++)
{
fprintf (fp1,"%.2x\n",bmp_data[i]); // 将数组中的数据放到txt文档中
}
fclose(fp1);
} //***************为了验证Verilog中读取的数据是否正确而额外加的代码***********************
FILE *fp2 = fopen("checkPic_data.txt" ,"w"); // 打开文件为存储图片数据做准备
if(fp2==NULL)
printf ("checkPic_data.txt data file open fault !!!!!");
else
{
printf ("\ncheckPic_data.txt data file open sucess !\n\n"); for (i=;i<pic_size;i++)
{
if(!(i%)) fprintf (fp2,"\n\n\n%.2x",bmp_data[i]);
else if(!(i%)) fprintf (fp2,"\n%.2x",bmp_data[i]);
else fprintf (fp2,"%.2x",bmp_data[i]); // 将数组中的数据放到checkPic_data文档中
}
fclose(fp2);
} system ("pause");
}
 #define pic_file  "flower.bmp"
#define pic_data "pic_data.txt"
#define bmp_file_rslt "sobel_rslt1.bmp" #define original_pic_height 768
#define original_pic_width 1024 #ifdef original_pic_width%=
#define pic_width original_pic_width
#else
#define pic_width (original_pic_width + 4 - original_pic_width%4 )
#endif #define pic_size (pic_width * original_pic_height)

bmp图片数据提取的更多相关文章

  1. 读取bmp图片数据

    public void getBMPImage(String source) throws Exception { clearNData(); //清除数据保存区 FileInputStream fs ...

  2. 【C】用C语言提取bmp图片像素,并进行K-means聚类分析——容易遇到的问题

    关于bmp图片的格式,网上有很多文章,具体可以参考百度百科,也有例子程序.这里只提要注意的问题. (1)结构体定义问题:首先按照百度百科介绍的定义了结构体,但是编译发现重定义BITMAPFILEHEA ...

  3. 提取bmp图片的颜色信息,可直接framebuffer显示(c版本与python版本)

    稍微了解了下linux的framebuffer,这是一种很简单的显示接口,直接写入像素信息即可 配置好的内核,会有/dev/fbn 的接口,于是想能否提前生成一个文件,比如logo.fb,里面仅包含像 ...

  4. [转]RGB数据保存为BMP图片

    转自:http://blog.csdn.net/yixianfeng41/article/details/52591585 一.BMP文件由文件头.位图信息头.颜色信息和图形数据四部分组成. 1.BM ...

  5. 利用COM组件IPicture读取jpg、gif、bmp图片文件数据和显示图片

    1.读取图片数据 函数原型:bool LoadImage(const char *pName, unsigned char *pBitData); 函数功能,读取pName指向的图片文件的位图数据 b ...

  6. c语言数字图像处理(一):bmp图片格式及灰度图片转换

    本篇文章首先介绍了bmp图片格式,主要参考wiki上的内容,包括bmp文件的存储方式,对于一些常见的bmp文件格式都给了例子,并且对8位 16位RGB555 16位RGB565格式的bmp文件进行了简 ...

  7. 纯C++代码实现将像素矩阵保存为bmp图片

    由于工作需要,时常需要将像素矩阵保存图片显示观看.为此,特地总结了三种使用纯C++代码生成bmp图片的方法.分别是使用自定义数据.从外界导入的txt和csv以及从图片中导入的数据. 1.使用自定义数据 ...

  8. 【VC++技术杂谈006】截取电脑桌面并将其保存为bmp图片

    本文主要介绍如何截取电脑桌面并将其保存为bmp图片. 1. Bmp图像文件组成 Bmp是Windows操作系统中的标准图像文件格式. Bmp图像文件由四部分组成: (1)位图头文件数据结构,包含Bmp ...

  9. bmp图片的有关操作

    读取bmp图片 并生成新的bmp图片 #include "stdafx.h"#include <windows.h>#include <cmath>#inc ...

随机推荐

  1. wireshark 包分析命令

    1.查看原地址过滤包命令: ip.src ==192.168.1.1 2.查看目的地址过滤包:ip.dst == 192.168.1.1 3.关键字 eq 等于 "==" ,and ...

  2. jQuery validate和form插件配套使用

    参考 官网http://jqueryvalidation.org/documentation/ 博客http://www.cnblogs.com/buzzlight/archive/2010/06/3 ...

  3. hdoj 3062 Party(2-SAT)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3062 思路分析:将问题转换为2-SAT问题,需要注意的是将命题转换为有向图的方法:命题中A1, A2, ...

  4. Winet API 支持HTTPP/SOCKS代理

    源程序 1.Winet API 支持使用IE代理.或者不使用代理.或者使用自定义代理三种方式. 2.使用自定义代理的话,支持HTTP代理,SOCKS代理,但是SOCKS代理不知支持用户名密码,HTTP ...

  5. linux 进程间信号量管理程序之sem_timedwait使用

    在开发过程中,有三个独立执行的程序模块,三个模块都对sqlite数据库进行读写操作.sqlite在linux共享性较差,所以须要增加相互排斥信号量解决三个模块訪问数据库该问题. 另外,在增加信号量后, ...

  6. Git基础 1 ---- 版本控制系统的介绍

    1 Git 1 版本控制系统 vcs - version control system 2 版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统 3 版本控制系统的主要功能 1 ...

  7. Andriod之Activity

    eclipse还原默认的面板设计:Window > Reset Perspective> OK1\ 1.多个Activity之间的关系: 2.Intent的基本作用: 3.在一个Activ ...

  8. java注解入门(含源码下载)

    注解(Annotation)是从jdk1.5开始增加的特性.学习注解能够读懂框架的代码:让编程更加简洁,代码更加清晰. 注解概念:java提供了一种原程序中的元素关联任何信息和任何元数据的途径和方法. ...

  9. mysql存储过程详解[转]

    1.      存储过程简介   我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储 ...

  10. hdu 2814 快速求欧拉函数

    /** 大意: 求[a,b] 之间 phi(a) + phi(a+1)...+ phi(b): 思路: 快速求欧拉函数 **/ #include <iostream> #include & ...