bmp图片数据提取
仿照别人的程序写的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图片数据提取的更多相关文章
- 读取bmp图片数据
public void getBMPImage(String source) throws Exception { clearNData(); //清除数据保存区 FileInputStream fs ...
- 【C】用C语言提取bmp图片像素,并进行K-means聚类分析——容易遇到的问题
关于bmp图片的格式,网上有很多文章,具体可以参考百度百科,也有例子程序.这里只提要注意的问题. (1)结构体定义问题:首先按照百度百科介绍的定义了结构体,但是编译发现重定义BITMAPFILEHEA ...
- 提取bmp图片的颜色信息,可直接framebuffer显示(c版本与python版本)
稍微了解了下linux的framebuffer,这是一种很简单的显示接口,直接写入像素信息即可 配置好的内核,会有/dev/fbn 的接口,于是想能否提前生成一个文件,比如logo.fb,里面仅包含像 ...
- [转]RGB数据保存为BMP图片
转自:http://blog.csdn.net/yixianfeng41/article/details/52591585 一.BMP文件由文件头.位图信息头.颜色信息和图形数据四部分组成. 1.BM ...
- 利用COM组件IPicture读取jpg、gif、bmp图片文件数据和显示图片
1.读取图片数据 函数原型:bool LoadImage(const char *pName, unsigned char *pBitData); 函数功能,读取pName指向的图片文件的位图数据 b ...
- c语言数字图像处理(一):bmp图片格式及灰度图片转换
本篇文章首先介绍了bmp图片格式,主要参考wiki上的内容,包括bmp文件的存储方式,对于一些常见的bmp文件格式都给了例子,并且对8位 16位RGB555 16位RGB565格式的bmp文件进行了简 ...
- 纯C++代码实现将像素矩阵保存为bmp图片
由于工作需要,时常需要将像素矩阵保存图片显示观看.为此,特地总结了三种使用纯C++代码生成bmp图片的方法.分别是使用自定义数据.从外界导入的txt和csv以及从图片中导入的数据. 1.使用自定义数据 ...
- 【VC++技术杂谈006】截取电脑桌面并将其保存为bmp图片
本文主要介绍如何截取电脑桌面并将其保存为bmp图片. 1. Bmp图像文件组成 Bmp是Windows操作系统中的标准图像文件格式. Bmp图像文件由四部分组成: (1)位图头文件数据结构,包含Bmp ...
- bmp图片的有关操作
读取bmp图片 并生成新的bmp图片 #include "stdafx.h"#include <windows.h>#include <cmath>#inc ...
随机推荐
- Array.Add () and += in PowerShell
$newArray = @() $newArray.Add("Hello") If I create a new array, and using the method Add() ...
- 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是唯一的控件就可以了,否则一执行 就会提 ...
- apache添加fastcgi支持
A,安装apache服务器和fastcgi模块支持(ubuntu测试) sudo apt-get install apache2 sudo apt-get install libapache2-mod ...
- Cloud Foundry warden container 安全性探讨
本文将从Cloud Foundry中warden container的几个方面探讨warden container的安全性. 1. warden container互訪 1.1. 互訪原理· 在Cl ...
- 开发板-PC机(宿主机)-虚拟机(VM)之间网络通信设置方法及须要注意的问题
1.不使用路由器交换机 硬件连接: 使用网线将开发板和PC机相连 串口线将PC机和开发板相连 使用命令: ifconfig -a 串口控制端查看开发板的网络配置 route -n 串口控制端查看开发板 ...
- 与一线Linux嵌入式开发project师的对话
转:与一线Linux嵌入式开发project师的对话 陈project师一直做Linux的嵌入式开发.作为在开发一线的project师.他对非常多问题的看法可能更切合实际需求,于是,通过邮件.就嵌入式 ...
- libevent入门
Libevent API =============================== evtimer_new evtimer_new(base, callback, NULL) 用来做定时器,即当 ...
- 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 ...
- [Jobdu] 题目1516 : 调整数组顺序使奇数位于偶数前面
void diffOddAndEven(int a[], int n) { , high = n - ; int pivot; while (low < high) { == && ...
- HTML5 总结-视频-1
HTML5 视频 视频格式 当前,video 元素支持三种视频格式: 格式 IE Firefox Opera Chrome Safari Ogg No 3.5+ 10.5+ 5.0+ No MPEG ...