1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
|
/* +------------------------------------------------------------------------+
| Mobile Robot Programming Toolkit (MRPT) |
| https://www.mrpt.org/ |
| |
| Copyright (c) 2005-2023, Individual contributors, see AUTHORS file |
| See: https://www.mrpt.org/Authors - All rights reserved. |
| Released under BSD License. See: https://www.mrpt.org/License |
+------------------------------------------------------------------------+ */
#include <mrpt/core/exceptions.h>
#include <mrpt/core/format.h>
#include <mrpt/io/vector_loadsave.h>
#include <mrpt/io/zip.h>
#include <mrpt/system/CTicTac.h>
#include <cstdio>
#include <iostream>
using namespace mrpt;
using namespace std;
// ------------------------------------------------------
// MAIN
// ------------------------------------------------------
int main(int argc, char** argv)
{
try
{
if (argc < 2)
{
cerr << "Usage: test-compress <input_file> [compression level 1-9]"
<< endl;
return -1;
}
std::vector<uint8_t> buf;
if (!mrpt::io::loadBinaryFile(buf, argv[1]))
{
cerr << "Error loading file: " << argv[1] << endl;
return -1;
}
string gzfile = format("%s.gz", argv[1]);
int compress_level = 9;
if (argc >= 3) { compress_level = atoi(argv[2]); }
mrpt::system::CTicTac tictac;
tictac.Tic();
if (!mrpt::io::zip::compress_gz_file(gzfile, buf, compress_level))
{
cerr << "Error writing compressing file: " << gzfile << endl;
return -1;
}
double t = tictac.Tac();
cout << format(
"Compressed %s (compress level=%i) in %.04f seconds.",
gzfile.c_str(), compress_level, t)
<< endl;
return 0;
}
catch (const std::exception& e)
{
std::cerr << "MRPT error: " << mrpt::exception_to_str(e) << std::endl;
return -1;
}
}
|