VS2010
我的操作如下,读取一幅8位灰度的图像,然后把数据类型转化为float型存在temp数组中,然后把数组的宽width,高height以int型写入temperature.tmp文件中,接着写入temp数据文件。写操作如下所示:
FILE * file;
file=fopen("temperature.tmp","w");
if(!file)
{
printf("open failed\n");
}
fwrite(&width,sizeof(int),1,file);
fwrite(&height,sizeof(int),1,file);
fwrite(&(temp[0]),sizeof(float),width*height,file);
fclose(file);
然后再去读temperature.tmp文件,读操作代码如下
FILE *file=fopen(name,"r");
if (!file)
{
printf("open failed read\n");
}
int img_width,img_height;
fread(&img_width,sizeof(int),1,file);
fread(&img_height,sizeof(int),1,file);
float * da=new float[img_height*img_width];
fread(da,sizeof(float),img_height*img_width,file);
fclose(file);
但是读出来的数据出现错误,错误并不是一直都出现,好像和图像大小有关,例如有一幅图像当高和宽较小时读出的数据是正确的,但是增大高和宽后就出错,但也有图像高和宽较大也不会出错。
------解决方案--------------------
file=fopen("temperature.tmp","w"); -> file=fopen("temperature.tmp","wb");
FILE *file=fopen(name,"r"); -> FILE *file=fopen(name,"rb");
打开模式设置成二进制的