我正在尝试将图像堆栈写入 TIFF 文件。图像大小为 256*256 像素,每个堆栈包含 1000 张图像。编写其中一个文件大约需要 4 分钟 - 所以我的代码很可能有问题。
这就是我正在做的:
void Tiff_WriterSplit(float data[], int PicNum, int WIDTH, int LENGTH, char PATH[]) {
int i;
int rows = LENGTH, columns = WIDTH;
TIFF* tif;
if (PicNum == 0)
tif = TIFFOpen(PATH, "w");
else
tif = TIFFOpen(PATH, "a");
TIFFSetField(tif, TIFFTAG_IMAGEWIDTH, columns);
TIFFSetField(tif, TIFFTAG_IMAGELENGTH, rows);
TIFFSetField(tif, TIFFTAG_SAMPLESPERPIXEL, 1);
TIFFSetField(tif, TIFFTAG_BITSPERSAMPLE, 32);
TIFFSetField(tif, TIFFTAG_SAMPLEFORMAT, SAMPLEFORMAT_IEEEFP);
for (i = 0; i < rows; i++)
TIFFWriteScanline(tif, &data[i * columns], i, 0);
TIFFWriteDirectory(tif);
TIFFClose(tif);
}
这个功能Tiff_WriterSplit
将为堆栈的每个图像调用。第一张图片将有PicNum = 0
打开 tiff 文件w
模式下,以下所有图像都会有一个PicNum > 0
打开它a
模式。写入速度开始时约为 40 MB/s,随着文件大小的增加而变得越来越慢 - 降至约 1 MB/s。我怎样才能优化性能?