는 Mac에서 Libtiff를 사용하여 TIFF 파일을 쓸 수 없습니다
에 업데이트 된 질문을 실패
:
내가 맥 에 읽기 libtiff3.9.4 및 C++에서 TIFF 파일을 작성을 사용 10.6.4. 내 프로젝트는 이식성이 있도록 작성되었으며 Windows 32 비트 및 우분투 64 비트 모두에서 문제없이 실행됩니다. 하지만 맥에서는 Libtiff 함수 TIFFWriteScanline은 항상 실패합니다 (! = 1을 반환합니다). TIFF 파일이 생성되었지만 내용이 없습니다. 나는 수 LZW 압축 된 이미지를 읽을 수 있지만 그것을 쓸 수 없습니다. 또한이 프로그램은 창 과 linux에서 CCITT Group4 이미지에 대해 작동하지만 읽기 스캔 라인은 Mac에서 실패합니다.
행운없이 libtiff3.8.2 및 libtiff4.0.0beta6을 모두 시도했습니다.
libtiff가 작동하는 Mac에서 스캔 라인을 쓰지 않는 이유는 무엇입니까? Linux에서 잘됩니까?
코드 :
// set baseline tags
TIFFSetField(tiffImage, TIFFTAG_IMAGEWIDTH, 7368);
TIFFSetField(tiffImage, TIFFTAG_IMAGELENGTH, 4757);
TIFFSetField(tiffImage, TIFFTAG_BITSPERSAMPLE, 8);
TIFFSetField(tiffImage, TIFFTAG_SAMPLESPERPIXEL, 1);
TIFFSetField(tiffImage, TIFFTAG_ORIENTATION, ORIENTATION_TOPLEFT);
TIFFSetField(tiffImage, TIFFTAG_COMPRESSION, COMPRESSION_LZW);
TIFFSetField(tiffImage, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_MINISBLACK);
TIFFSetField(tiffImage, TIFFTAG_THRESHHOLDING, 1);
TIFFSetField(tiffImage, TIFFTAG_XRESOLUTION, 400;
TIFFSetField(tiffImage, TIFFTAG_YRESOLUTION, 400);
TIFFSetField(tiffImage, TIFFTAG_RESOLUTIONUNIT, 2);
uint32 rowsPerStrip;
rowsPerStrip = tiffData->height;
rowsPerStrip = TIFFDefaultStripSize(tiffImage, rowsPerStrip);
TIFFSetField(tiffImage, TIFFTAG_ROWSPERSTRIP, rowsPerStrip);
TIFFSetupStrips(tiffImage);
// row buffer
scanlineSize = TIFFScanlineSize(tiffImage);
scanline = (unsigned char*) _TIFFmalloc(scanlineSize);
// write image
for (int i = 0; i < iplImage->height; i++)
{
memcpy(scanline, iplImage->imageData + iplImage->widthStep*i, scanlineSize);
if(TIFFWriteScanline(tiffImage, scanline, i, 0) != 1){
//Error
}
}
// clean up
_TIFFfree(scanline);
문제를보기 위해 처음부터 코드를 작성할 필요가 없도록 코드를 게시 할 수 있습니까? – Yuji