LibTIFF 라이브러리를 사용하여 이미지를 저장하는 데 문제가 있습니다.32 비트 TIFF 이미지가 흰색으로 보입니다. RAW와 다릅니다
내 코드에는 이미지의 픽셀 값을 나타내는 float 배열이 있습니다. 이 값을 RAW 파일에 저장하면 잘 보입니다. 그러나 LibTIFF 라이브러리를 사용하여 TIFF 파일로 저장하려고하면 ImageJ에서 이미지를 열 때 이미지가 완벽하게 잘 보이지만 Photoshop이나 Windows에서 이미지를 열면 이미지가 이상하게 보입니다 (아래 참조). Gimp는 완전히 투명한 이미지 (이미지에 데이터가 전혀없는 것처럼).
ImageJ를 사용하여 RAW 파일을 열면 이미지 유형이 32 비트로 설정됩니다. 실제 및 리틀 엔디안 바이트 순서가 선택됩니다. 여기
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);
뭔가 내가 파일을 저장하고있어 길을 잘못 확신을 -하지만 난 아무 생각이 무엇인지 . 도와 주셔서 정말로 고맙습니다!
스크린 샷의 오른쪽 그림을 보면, 이것이 32 비트 TIFF 파일의 하위 8 비트에 불과하다고 생각됩니다. Windows 이미지 뷰어는 부분적으로 만 이해할 수있는 부분을 발견했을 때 그럴 것입니다.) – he1ix