gpt4 book ai didi

c++ - 无法在 Mac 上使用 Libtiff 写入 TIFF 文件

转载 作者:行者123 更新时间:2023-11-30 04:37:58 26 4
gpt4 key购买 nike

TIFFWriteScanline 在 Windows 和 Linux 上工作,但在 Mac 上失败

更新的问题:

我使用 libtiff3.9.4 在 mac 上用 C++ 读写 TIFF 文件10.6.4。我的项目被编写为可移植的并且无需任何Windows 32 位和 Ubuntu 64 位上的问题。但是在mac上Libtiff 函数 TIFFWriteScanline 总是失败(它返回 != 1)。这TIFF 文件已创建,但没有任何内容。我能够阅读 LZW 压缩图像,但我无法编写它。此外,该程序还适用于 Windows 上的 CCITT Group4 图像和 linux,但在 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);

最佳答案

根据您提供的信息很难判断,但我的最佳猜测是您编译的 libtiff 不支持您正在使用的特定输出格式。

此外,如果 TIFFWriteScanline 返回 -1,除非您替换了自己的错误处理程序,否则应该会出现一条错误消息。这应该是关于正在发生的事情的有用线索。

关于c++ - 无法在 Mac 上使用 Libtiff 写入 TIFF 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3493933/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com