reading/writing tiff 图片 C

reading/writing tiff images C

我正在处理 tiff 图像。我不应该使用任何库来这样做。

void copy(char *srcFilename, char *dstFileName)
{
  FILE *fsrc, *fdst;
  char c;

  printf("Inside copy function\n");
  fsrc=fopen(srcFilename, "rb");

  if (fsrc==NULL) 
  {
    printf("Couldn't open file %s for reading.\n", srcFilename);
    exit(0);
  }

  /* Add usual error check */
  fdst=fopen (dstFileName, "w");
  /*Add usual error check */
  for ( ; !feof(fsrc); )
  fputc (fgetc (fsrc), fdst);

  fclose (fsrc);
  fclose (fdst);
}

此函数应该复制 tiff 图像。它适用于小的 tiff 图像,但当它更大时,输出不能显示为 tiff,我可以看到它的格式正在改变(通过比较 hexa 值)

提供的代码有两个问题:

  1. 以文本模式打开目标文件。请改用 fopen(dstFileName, "wb")

  2. 当到达EOF时,fgetc(fsrc)将return一个特殊的文件结束标记,定义为EOF预处理器符号(值为-1)。此值不得写入目标文件。正确的外观应该是这样的:int c; while ((c = fgetc(fsrc)) != EOF) fputc(c, fdst);