仿照别人的程序写的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. Array.Add () and += in PowerShell

    $newArray = @() $newArray.Add("Hello") If I create a new array, and using the method Add() ...

  2. invalid nib registered for identifier (重用符) - nib must contain exactly one top level object which must be a UITableViewCell instance'

    通过xib创建cell的时候 一定要注意!!! 这个错误是在这个xib中在View同一层级出现了其他的控件,检查一下xib中左边的层级关系,让cell的view是唯一的控件就可以了,否则一执行 就会提 ...

  3. apache添加fastcgi支持

    A,安装apache服务器和fastcgi模块支持(ubuntu测试) sudo apt-get install apache2 sudo apt-get install libapache2-mod ...

  4. Cloud Foundry warden container 安全性探讨

    本文将从Cloud Foundry中warden container的几个方面探讨warden container的安全性. 1. warden container互訪 1.1.  互訪原理· 在Cl ...

  5. 开发板-PC机(宿主机)-虚拟机(VM)之间网络通信设置方法及须要注意的问题

    1.不使用路由器交换机 硬件连接: 使用网线将开发板和PC机相连 串口线将PC机和开发板相连 使用命令: ifconfig -a 串口控制端查看开发板的网络配置 route -n 串口控制端查看开发板 ...

  6. 与一线Linux嵌入式开发project师的对话

    转:与一线Linux嵌入式开发project师的对话 陈project师一直做Linux的嵌入式开发.作为在开发一线的project师.他对非常多问题的看法可能更切合实际需求,于是,通过邮件.就嵌入式 ...

  7. libevent入门

    Libevent API =============================== evtimer_new evtimer_new(base, callback, NULL) 用来做定时器,即当 ...

  8. SQL Server(SSIS package) call .net DLL

    There are two method to call .net DLL in SQLSERVER. The first one is to use the sql clr but it has a ...

  9. [Jobdu] 题目1516 : 调整数组顺序使奇数位于偶数前面

    void diffOddAndEven(int a[], int n) { , high = n - ; int pivot; while (low < high) { == && ...

  10. HTML5 总结-视频-1

    HTML5 视频 视频格式 当前,video 元素支持三种视频格式: 格式 IE Firefox Opera Chrome Safari Ogg No 3.5+ 10.5+ 5.0+ No MPEG ...