大家好,
我加载一组图像并生成体积数据。我将此体积数据保存在
无符号字符*体积
array.
现在我想将此数组保存在文件中并检索。但在保存之前我想压缩字节数组,因为卷数据很大。
这方面有什么建议吗?
提前致谢。
volume
在你的例子中不是一个数组。至于压缩,有一些关于该主题的书籍。如需快速、轻松地使用 C++ 进行操作,请查看升压iostream http://www.boost.org/doc/libs/1_44_0/libs/iostreams/doc/index.html图书馆,它附带zlib http://www.boost.org/doc/libs/1_44_0/libs/iostreams/doc/classes/zlib.html#basic_zlib_compressor, gzip http://www.boost.org/doc/libs/1_44_0/libs/iostreams/doc/classes/gzip.html#basic_gzip_compressor, and bzip2 http://www.boost.org/doc/libs/1_44_0/libs/iostreams/doc/classes/bzip2.html#basic_bzip2_compressor压缩机。
为了抵消我的挑剔,这里有一个例子(改为char
因为它更加详细unsigned char
s)
#include <fstream>
#include <boost/iostreams/filtering_streambuf.hpp>
#include <boost/iostreams/stream.hpp>
#include <boost/iostreams/filter/bzip2.hpp>
#include <boost/iostreams/device/array.hpp>
#include <boost/iostreams/copy.hpp>
namespace io = boost::iostreams;
int main()
{
const size_t N = 1000000;
char* volume = new char[N];
std::fill_n(volume, N, 'a'); // 100,000 letters 'a'
io::stream< io::array_source > source (volume, N);
{
std::ofstream file("volume.bz2", std::ios::out | std::ios::binary);
io::filtering_streambuf<io::output> outStream;
outStream.push(io::bzip2_compressor());
outStream.push(file);
io::copy(source, outStream);
}
// at this point, volume.bz2 is written and closed. It is 48 bytes long
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)