24位bmp文件的读取&存储
我采用的方法是将图像文件读取,存储到一维数组中,以便后期的操作。
void checkFileExist(FILE * fpbmp)
{
//打开图片文件 按照二进制读取
if (fpbmp == NULL)
{
printf("当前打开的文件不存在!\n");
exit(1);
}
}
void readFile(FILE * pfInput, BITMAPFILEHEADER &fileHeader, BITMAPINFOHEADER &infoHeader)
{
//ReadtheBitmapfileheader;
fread(&fileHeader, sizeof(BITMAPFILEHEADER), 1, pfInput);
//ReadtheBitmapinfoheader;
fread(&infoHeader, sizeof(BITMAPINFOHEADER), 1, pfInput);
}
void checkInput(BITMAPINFOHEADER infoHeader, BITMAPFILEHEADER fileHeader)
{
if (fileHeader.bfType != BM)
{
printf("This file is not bmp file.!!!\n");
exit(1);
}
if (infoHeader.biBitCount != 24)
{
printf("当前打开的文件不是24位的bmp图,请检查后重启!\n");
printf("当前的位数为:%d\n", infoHeader.biBitCount);
exit(1);
}
else
{
printf("当前输入文件为:24位bmp图片\n");
}
}
void readWidthHeight(FILE *bfIn, BITMAPINFOHEADER infoHeader, int &original_width, int &original_height)
{
original_width = infoHeader.biWidth;
original_height = infoHeader.biHeight;
}
void bfWriteHead(FILE *bfIn, FILE *bfOut, BITMAPFILEHEADER &fileHeader)
{ //位图头文件
fseek(bfIn, 0L, SEEK_SET);
fseek(bfOut, 0L, SEEK_SET);
fwrite(&fileHeader, sizeof(BITMAPFILEHEADER), 1, bfOut);
}
图像信息数据存储
void dataWrite(FILE *bfIn, FILE *bfOut,BITMAPINFOHEADER infoHeader,int original_width, int original_height)
{
fseek(bfIn, 54L, SEEK_SET);
int lineByte = WIDTHBYTES(original_width * infoHeader.biBitCount);
int l_width2 = WIDTHBYTES(original_height * infoHeader.biBitCount); //计算位图的实际宽度并确保它为4byte的倍数
unsigned char *data_original = (unsigned char*)malloc(sizeof(char)*original_height*lineByte);
if (data_original == NULL) {
printf("malloc failed\n");
}
memset(data_original, 0, original_height*lineByte);
fread(data_original, sizeof(char), lineByte*original_height, bfIn); //读取输入文件的数据信息
//……
//此处是具体的图像处理代码
free(data_original);
data_original = NULL;
}
之前wsl+ubuntu一直用/mnt/c进入windows目录。现在换成wt+zsh,结果/mnt/c/usr直接到ubuntu目录了解决方法直接进c即可:cd /c/Windows/system32
Aragorn’s Story
本文从鸿蒙环境搭建开始说起,并汇总了HarmonyOS智能硬件开发和应用开发的一手资料,全场景剖析HarmonyOS系统究竟是什么、如何助力开发者更便捷高效地开发应用。1.我的鸿蒙起步——开发环境搭建2.HarmonyOS智能硬件开发学习指南3.应用开发HarmonyOS应用开发学习指南...
原文链接:http://arongranberg.com/astar/docs/getstarted.php插件下载地址:http://pan.baidu.com/s/1eROqaB4题外话:最近想学习一下A*插件,由于在网上没有发现什么比较详细的教程,所以就只能上官网了。这是第一次看这么长的英语文章,翻译得不好,请见谅!概述:A*插件的核心脚本就是”astarpath.cs”,所以如果你想使用A*插件进行寻路,那么场景中一定要有一个”astarpath.cs”(并且一个场景仅有一个).
spark2.32 源码编译cdh5.15.0功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入使用的软件有apach...
/***脚本作用:关闭当前应用**代码编写:魚離ヤ吥開氺**时间:2019.03.26**代码建议者:依和乐**测试系统:安卓8.1**Auto.js版本: 4.1.1**自适配目前主流安卓手机,如有其他请自行加入修改即可使用方法:调用 关闭应用() 封装函数即可;*///测试关闭QQ应用launchApp("QQ");sleep(1500);关闭应用();//此代...
https://www.cnblogs.com/hitcm/p/5939507.htmlhttps://google-cartographer-ros.readthedocs.io/en/latest/index.html
最近做项目需要实现一个类似于淘宝、京东首页那种滑动效果的广告。于是想到使用ViewPager,但是ViewPager本身是不支持无限左右滑动的,所以需要自己实现。目前实现无限滑动的思路大体有两个:1、将viewpager上限设置成一个很大的数,第一个页面设置到中间。然后滑动的时候,用当前的序号与viewpager页面数取余得到目标页面的序号,然后显示出来。理论上一个人不会无聊到一直左滑
在使用海思的片子的时候,文档有介绍demo板使用tftp更新固件以及使用nfs开发。现将操作做一个总结,以备后面查询。参考:https://blog.csdn.net/zhaoyun_zzz/article/details/82659337https://blog.csdn.net/zengxiaohua123/article/details/80614950tftp的增强版本:t...
Caused by: java.lang.ClassCastException:android.widget.LinearLayout$LayoutParams 最近,在android中用代码动态改变某种布局(组件)的高度时,会遇到如题所示的类转换异常。上网查了一下,如下所示:These supply parameters to the parent o
字符串的格式化在python中也有类似于c中的printf()的格式输出标记。在python中格式化输出字符串使用的是%运算符,通用的形式为格式标记字符串 % 要输出的值组其中,左边部分的”格式标记字符串“可以完全和c中的一致。右边的'值组'如果有两个及以上的值则需要用小括号括起来,中间用短号隔开。重点来看左边的部分。左边部分的最简单形式为:%c...
计算机系统组成及工作原理1.计算机系统一般有硬件和软件两大系统组成。2.微型计算机系统结构由运算器、控制器、存储器、输入设备、输出设备五大部分组成。3.微型计算机的运算器由算术逻辑运算部件(ALU)、累加器和通用寄存器组成。4.微型计算机中,运算器和控制器合称为中曲处理单元(CPU)。5.冯●诺依曼计算机工作原理的设计思想就是把程序输入到计算机存储起来,然后依次执行,简称为程序存储。6.在衡量计算...