LIBTIFF读取tiff文件时,打印buf出错

2023-05-16

如图所示,按照官网提供的例程读取tiff文件,并打印读取的值时,提示:

 Subscript of pointer to incomplete type 'void'

代码如下:

    //---打开tiff文件的测试
    
    
    TIFF* tif = TIFFOpen("a.tif", "r");
    if(tif){
        uint32 imageLength;
        tsize_t scanline;
//        unsigned char* buf;
        tdata_t* buf;
        uint32 row;
        uint32 col;
        
        TIFFGetField(tif, TIFFTAG_IMAGELENGTH, &imageLength);
        scanline = TIFFScanlineSize(tif);
//        buf = (unsigned char *)_TIFFmalloc(scanline);
        buf = (tdata_t*)_TIFFmalloc(scanline);
        printf("Scanlinesize = %zu", scanline);// %zu用来打印tsize_t
        for(row=0;row <imageLength;row++){
            TIFFReadScanline(tif, buf, row);
            for(col=0;col<scanline;col++){
                printf("buf[%d][%d]=%d", row,col,buf[col]);
//                printf("%d", buf[col]);//报错:Subscript of pointer to incomplete type 'void'
                                        //解决方法,将buf的类型由tdata_t改成unsigned char*
            printf("\n");
            }
        }
        _TIFFfree(buf);
        TIFFClose(tif);
    }

报错情况如图所示:

 

报错原因:

可能是buf 类型在分配内存的时候应该是指针类型,如下:

        buf = (unsigned char *)_TIFFmalloc(scanline);
//        buf = (tdata_t*)_TIFFmalloc(scanline);

使用tdata_t* 和unsigned char *类型都可以编译成功,但是打印出的数据不同:

tdata_t* 时,打印的数据如下:

 

使用unsigned char * 时,打印的数据如下:

 貌似使用unsigned char * 时获取的数据应该是正确的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LIBTIFF读取tiff文件时,打印buf出错 的相关文章

  • LIBTIFF读取tiff文件时,打印buf出错

    如图所示 xff0c 按照官网提供的例程读取tiff文件 xff0c 并打印读取的值时 xff0c 提示 xff1a Subscript of pointer to incomplete type 39 void 39 代码如下 xff1a
  • 如何在 Silverlight 上显示 tiff 文件?

    如何在 Silverlight 应用程序上显示 tiff 文件 我可以显示除 tiff 之外的任何图像格式 有人可以帮助我吗 谢谢 我成功地在 Silverlight 中显示 TIFF 免费移植很容易LibTiff NET库到 Silver
  • 在 C# 中加载 .tiff 文件

    我必须加载 tiff 文件 我都做了Image FromFile and Bitmap FromFile 但他们正在扔OutOfMemoryException 有什么解决方案如何加载这个吗 我假设您尝试加载的 TIFF 文件使用与 Net
  • 保存多帧 TIFF

    我从 C 应用程序中的 Stream 加载多帧 TIFF 然后使用 Image Save 方法保存它 但是 这仅保存第一帧的 TIFF 如何让它保存多帧 tiff 由于您没有提供任何详细信息 仅提供一些一般提示 多帧 TIFF 是非常复杂的
  • 使用 iText 将 tiff 文件转换为 pdf 文件时出现异常

    当我尝试转换tiff文件至pdf文件通过使用itextpdf 5 5 5 出现以下异常 java lang RuntimeException 扫描线必须以 EOL 代码字开头 在 com itextpdf text pdf codec TI
  • 在 PIL 中使用 TIFF G4 图像

    我编写了一个纯 python TIFF G4 解压缩以供使用tifffile py 我知道有一些方法可以添加libtiff自定义 PIL 但我永远无法让它在混合 virtualenv 中很好地工作 我想在PIL中操作图像 我正在寻找将我的减
  • Java 处理 TIF 图像

    我的问题是 如何成功地将 tif 文件加载到 Java 中的 Image 实例中 现在让我提供更多细节 我在 stackoverflow 上阅读了很多关于如何在 Java 中处理 转换 TIF 图像的线程 我已经尝试了很多 stackove
  • OSX 中的 tiff() 分辨率和压缩设置不可靠

    分辨率和压缩选项tiff 在我的系统上似乎被忽略 请参阅下面的信息 这似乎与中讨论的问题相同这个问题 https stackoverflow com questions 12609816 r tiff wont compress or se
  • 使用 Anaconda 或 Canopy 安装 Python 模块

    我玩过一点 Python 但从来不需要安装自己的包 我目前正在尝试编写一个读取 tiff 文件的程序 因此我尝试安装 libtiff 包 但我做了一场噩梦 首先 我使用的是 Anaconda 发行版和短语 conda install lib
  • 在 python 中将 RAW 图像转换为 TIFF 但保留元数据

    我尝试将原始图像转换为 tiff 但我希望它保留元数据 这是我之前使用的代码 import rawpy imageio os with rawpy imread path as raw rgb raw postprocess imageio
  • 构建 R:--with-libtiff 未启用 TIFF 功能

    编译R 3 3 2从源头 我的标志包括 with libtiff 他们是 configure with system tre with blas with lapack with libtiff enable R shlib enable
  • 如何为 tiff 文件添加附加标签

    我正在尝试读取并保存带有一些附加标签的 tiff 文件 当我制作一个运行良好的新图像时 但是当我打开一个图像然后尝试写回一些元标记时 它不起作用 图像可以写入 但它将保留原始标签而不做任何更改 我附上了我的测试代码 非常感谢您的帮助 fro
  • 如何将 dzi 文件转换为多瓦金字塔 tiff 格式

    参考答案 如何将 dzi 深度变焦 文件转换为完整图像 https stackoverflow com questions 53986084 how to convert dzi deep zoom files to full image
  • TIFFReadDirectory 使用 QPixmap::load( ) 读取 GeoTiff 时出现警告

    我有一个 geotiff 文件 我正在使用 QPixmap load 将其加载到 QPixmap 中 我多次在控制台上打印以下警告 但是 直接使用 libtiff 打开它不会出现警告 关于如何减轻 QT 中这些难看的警告有什么想法吗 TIF
  • 使用 System.Drawing 编辑多页 TIFF 图像

    我试图通过从图像创建图形来编辑多页 tiff 但遇到了错误消息 无法从具有索引像素格式的图像创建 Graphics 对象 如何编辑多页 tiff 我写了一些东西来从多页 tiff 文件中提取单页 Load as Bitmap using B
  • 查找 GeoTiff 图像中每个像素的纬度/经度坐标

    我目前有一个来自 GeoTiff 文件的 171 x 171 图像 尽管在其他情况下 我可能有更大的图像 我的目标是获取图像中的每个像素并将其转换为纬度 经度对 我已经能够根据此 StackOverflow 帖子将图像的角点转换为纬度 经度
  • 读取 tiff 文件的尺寸和分辨率而不先加载它

    如何使用如下代码读取 tiff 文件的尺寸 宽度和高度 和分辨率 水平和垂直 而无需先将其加载到内存中 对于大文件来说太慢了 而且我不需要操作它们 Image tif Image FromFile C large size tif floa
  • 将两个单通道 TIFF 堆栈合并为一个多通道堆栈

    我有两个 tiff 堆栈 其中包含与显微镜实验中获取的不同通道相对应的延时数据 我想将它们合并到具有两个通道的单个堆栈中 两个堆栈都是 16 位灰度 当我使用时 convert stack1 tiff stack2 tiff stack m
  • MATLAB 写入多页 tiff 指数慢

    我正在尝试编写一个多页 tiff 文件 该文件是 128 像素 x 128 像素 x 122000 帧的 16 位无符号整数 ImageJ 或简短的 Python 脚本可以在快速机器上在一分钟内完成此操作 在同一台机器上 无论使用我尝试过的
  • 使用 .NET 创建采用 JPEG 压缩的多页 TIFF

    有没有办法使用 NET 创建多页 TIFF 和 JPEG 压缩 我可以使用 LZW 压缩创建 TIFF 但文件非常大 好像EncoderValue枚举 我用来设置压缩 甚至没有合适的成员 你可以看看 gt gt 这篇文章 https sta

随机推荐