用c语言读写bmp图像,图像的高和宽输出不正确,请问代码哪里有问题?哪位大神可以解答一下,谢谢

问题描述

用c语言读写bmp图像,图像的高和宽输出不正确,请问代码哪里有问题?哪位大神可以解答一下,谢谢
#include
#include
#include

int ReadBmp(const char bmpName); /函数原型*/
BITMAPFILEHEADER fileHead; /*文件信息头*/
BITMAPINFOHEADER infoHead; /*位图信息头*/
RGBQUAD pColorTable[256]; /*颜色表指针*/
unsigned char pBmpBuf; /图像数据指针*/
int bmpWidth; /*图像的宽*/
int bmpHeight; /*图像的高*/
int biBitCount; /*每像素位数*/
int lineByte; /*每行的字节数*/

/* run this program using the console pauser or add your own getch system(""pause"") or input loop */

int main(int argc char argv[]) {
if(ReadBmp(""picturetext.BMP"")){
printf(""%s的宽度和高度为:%d
%dn""picturetext""bmpWidthbmpHeight);
}
return 0;
}

/*ReadBmp:将给定bmp文件读入内存,存放在相应的全局变量中。0为失败,1为成功*/
int ReadBmp(const char bmpName){
FILE *fp=fopen(bmpNamerb""); /
二进制读方式打开指定的图像文件*/
if(fp==NULL)
return 0;
fread(&fileHeadsizeof(BITMAPFILEHEADER)1fp); /*读文件信息头*/
fread(&infoHeadsizeof(BITMAPINFOHEADER)1fp); /*读位图信息头*/
bmpWidth=infoHead.biWidth; /*获取图像宽,高,每像素所占位数等信息 /
bmpHeight=infoHead.biHeight;
biBitCount=infoHead.biBitCount;
lineByte=(bmpWidth*biBitCount/8+3)/4*4; /
计算每行字节数(必须是4的倍数)*/
if(biBitCount==8){ /*灰度图像有颜色表,且颜色表表项为256*/
fread(pColorTablesizeof(RGBQUAD)256fp); /*读颜色表*/
}
/*申请位图数据所需要的空间*/
pBmpBuf=(unsigned char*)malloc(sizeof(unsigned char)*lineByte*bmpHeight);
fread(pBmpBuf1lineByte*bmpHeightfp); /*读位图数据*/
fclose(fp);
return 1;
}

时间: 2024-12-11 08:54:22

用c语言读写bmp图像,图像的高和宽输出不正确,请问代码哪里有问题?哪位大神可以解答一下,谢谢的相关文章

求解决-按照例子不能正常输出,程序不知道那里出错误了,请大神们指出来,我好改正,请用c语言编写

问题描述 按照例子不能正常输出,程序不知道那里出错误了,请大神们指出来,我好改正,请用c语言编写 #include #include /**本题要求编写程序,将给定的n个整数存入数组中,将数组中的这n个数逆序存放,再按顺序输出数组中的元素. 输入格式: 输入在第一行中给出一个正整数n(1≤n≤10).第二行输入n个整数,用空格分开. 输出格式: 在一行中输出这n个整数的处理结果,相邻数字中间用一个空格分开,行末不得有多余空格. 输入样例: 4 10 8 1 2 输出样例: 2 1 8 10 **

c语言-关于C语言结构体指针类型的强制转换(求大神详细解答)

问题描述 关于C语言结构体指针类型的强制转换(求大神详细解答) #include <iostream> #include <algorithm> using namespace std; typedef struct { string dna; int count; }DNA; DNA dna[101]; **int cmp(const void *a,const void *b) { DNA *aa = (DNA *)a; DNA *bb = (DNA *)b; return a

acm-一道ACM的题求大神们解答,C语言,谢谢!

问题描述 一道ACM的题求大神们解答,C语言,谢谢! [题目描述] FFF团成员自带这样一个属性:凭空变出火把与汽油,两者配合起来才能让FFF之火duang的一下烧起来,但是不同的火把与不同的汽油配合产生的火焰是不同的,现在有n种火把与n种汽油,已知每一种火把与每一种汽油配合时产生的火焰的旺盛程度,现在求怎样使得火把与汽油一一配对,产生最旺盛的火焰. [输入] 第一行为一个整数T,表示有T组数据 每组数据第一行为一个正整数n(2≤n≤30) 第二行开始一共有n行,每行为n个正整数,第i行第j个数

代码-求解答谢谢,有关C语言的问题,请哪位大神解答。谢谢

问题描述 求解答谢谢,有关C语言的问题,请哪位大神解答.谢谢 假设有4个有序表A,B,C和D,它们分别含有的元素个数为17,28,36,67,各个表的元素已按照升序排列,如何用Huffman树,通过两两合并并合成有序表,要求在最坏的情况下比较次数达到最小,说明你的合并过程!!! 请问这个怎么合并啊,方便的话给个代码可以吗,谢谢 解决方案 求大神帮解答javaEE这个问题,谢谢了liunx 串口通信问题,跪求各位大神解答 解决方案二: 霍夫曼树构造思想就是依次选择当前最短的两个表进行合并,每次合并

c语言-C编程题考题请教大神帮忙解答,非常感谢

问题描述 C编程题考题请教大神帮忙解答,非常感谢 求大侠帮忙:C语言程序设计---编程题(以下所有题目程序应是非递归的) 程序实现任意两个字符串s1.s2的比较.要求: 1) 字符串的比较写一函数sub()实现,不得调用标准库函数strcmp; 2) 在主函数中完成数据的输入与结果的输出. 如果整数A的全部因子(包括1,不包括A本身)之和等于B;且整数B的全部因子(包括1,不包括B本身)和等于A,则将整数A和B称为亲密数对.编程求5000以内的全部亲密数对. 程序实现将无序整数数组压缩成有序数组

file-c语言在linux环境下进行文件复制的代码,使用时出错,求各位大神帮忙解答下

问题描述 c语言在linux环境下进行文件复制的代码,使用时出错,求各位大神帮忙解答下 #include#include#include#include#include#include#include#define BUFSIZE 4096#define COPYMODE 0644 void oops(char *char *);void *emalloc(size_t);void do_copy(char *char *);void copydir(char *char *);int isdi

c语言二叉树问题,代码不太理解,求大神解释,急

问题描述 c语言二叉树问题,代码不太理解,求大神解释,急 问题:A Binary Tree is called balanced if, for each node in the tree, the height of its left and right subtrees differ by no more than one. Write a function int height_if_balanced( Tnode *root ) which returns -1 if the tree

c语言指针指向地址的问题 求大神详细解答

问题描述 c语言指针指向地址的问题 求大神详细解答 #include int main(int argc char const *argv[]){ int b=0x12345678;char *p4=(char *)&b;printf(""p=0x%hhxn""*p4 );printf(""p=0x%hhxn""*(p4+1) );char *p7=""helloworld"";

刚学c语言出了小问题。。大神棒棒看 谢谢

问题描述 刚学c语言出了小问题..大神棒棒看 谢谢 一个计算日期距离的玩意 #include int sr(); int main() { printf("请输入起始年月日(以回车间隔) "); int memories; int year = sr(); int month = sr(); int day = sr(); printf("请输入当前年月日(以回车间隔) "); int thisyear = sr(); int thismonth = sr(); i