C LibTiff – 从和内存中读取并保存文件

在LibTiff中有没有办法如何从内存中读取文件并将其保存到内存?

我不想先将图像保存到光盘,然后再用其他的图库打开它.

非常感谢!

解决方法

我知道这是一个古老的问题,但是我将为需要这些信息的人们提供一个更简单,更新的最新的答案,这些信息需要更多最新版本的libtiff.在最新版本的libtiff(4.0.2)中,甚至过去几个版本我相信(检查您的具体版本号),还有一个名为tiffio.hxx的包含文件.它有两个外部函数用于读/写内存中的流:
extern TIFF* TIFFStreamOpen(const char*,std::ostream *);
extern TIFF* TIFFStreamOpen(const char*,std::istream *);

您可以只包含这个文件并读取或写入内存.

写作范例:

#include <tiffio.h>
#include <tiffio.hxx>
#include <sstream>    

std::ostringstream output_TIFF_stream;

//Note: because this is an in memory TIFF,just use whatever you want for the name - we 
//aren't using it to read from a file
TIFF* mem_TIFF = TIFFStreamOpen("MemTIFF",&output_TIFF_stream);

//perform normal operations on mem_TIFF here like setting fields
//...

//Write image data to the TIFF 
//..

TIFFClose(created_TIFF);   

//Now output_TIFF_stream has all of my image data. I can do whatever I need to with it.

阅读非常相似:

#include <tiffio.h>
#include <tiffio.hxx>
#include <sstream>

std::istringstream input_TIFF_stream;
//Populate input_TIFF_stream with TIFF image data
//...

TIFF* mem_TIFF = TIFFStreamOpen("MemTIFF",&input_TIFF_stream);

//perform normal operations on mem_TIFF here reading fields
//...

TIFFClose(created_TIFF);

这些是非常简单的例子,但您可以看到,通过使用TIFFStreamOpen,您不必重写这些函数并将它们传递给TIFFClientOpen.

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...