LibTIFF ライブラリを使用して画像を保存する際に問題があります。
私のコードには、画像のピクセル値を表す float の配列があります。これらの値を RAW ファイルに保存すると、問題ないように見えます。ただし、LibTIFF ライブラリを使用して TIFF ファイルとして保存しようとすると、ImageJ で開くと画像は完全に正常に見えますが、Photoshop または Windows で開くと奇妙に見え (下を参照)、Gimp が表示されます完全に透明な画像 (画像にデータがまったくないように)。
ImageJ を使用して RAW ファイルを開きます。イメージ タイプは 32 ビットに設定されています - 実数およびリトル エンディアンのバイト オーダーが選択されています。
TIFF 画像を保存するために使用するコードは次のとおりです。
TIFF *tif= TIFFOpen(name, "w");
TIFFSetField (tif, TIFFTAG_IMAGEWIDTH, width);
TIFFSetField (tif, TIFFTAG_IMAGELENGTH, height);
TIFFSetField (tif, TIFFTAG_PLANARCONFIG, PLANARCONFIG_CONTIG);
TIFFSetField (tif, TIFFTAG_SAMPLESPERPIXEL, 1);
TIFFSetField (tif, TIFFTAG_ROWSPERSTRIP, 1);
TIFFSetField (tif, TIFFTAG_COMPRESSION, COMPRESSION_NONE);
TIFFSetField (tif, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_MINISBLACK);
TIFFSetField (tif, TIFFTAG_BITSPERSAMPLE, 32);
TIFFSetField (tif, TIFFTAG_ORIENTATION, ORIENTATION_TOPLEFT);
tsize_t strip_size = TIFFStripSize (tif);
tstrip_t strips_num = TIFFNumberOfStrips (tif);
float* strip_buf=(float*)_TIFFmalloc(strip_size);
for (unsigned int s=0; s<strips_num; s++) {
for (unsigned int col=0; col<width; col++) {
strip_buf[col]=image[s][col];
}
TIFFWriteEncodedStrip (tif, s, strip_buf, strip_size);
}
_TIFFfree(strip_buf);
TIFFClose(tif);
ファイルの保存方法に問題があることは確かですが、何が原因かわかりません。助けてくれてどうもありがとう!