Statistiques
| Révision :

root / src / tiff2inr.cpp @ 6

Historique | Voir | Annoter | Télécharger (2,24 ko)

1
/*
2
Convert tif file into inr
3

4
To compile :
5
 g++ -o tiff2inr tiff2inr.cpp -O2 -L/usr/X11R6/lib -lm -lpthread -lX11 -fopenmp -l:libtiff.so.5
6
 Needs CImg.h
7

8
To execute :
9
 ./tiff2inr img.tif compress
10

11
 img : image in .tif
12
 compress : if 0 then output image is not compressed (img.inr), else the output is img.inr.gz
13
 
14
*/
15
#include <iostream>
16
#include <math.h>
17
#include <sstream>
18
#include <fstream>
19

    
20
#define cimg_use_tiff
21
#include "CImg.h"
22

    
23
using namespace cimg_library;
24
using namespace std;
25

    
26
//-----------------------------------------------------------------------------
27
//Main
28
//-----------------------------------------------------------------------------
29
int main (int argc, char* argv[])
30
{
31
  
32
  if( argc>3 || argc<2 )
33
    {
34
      cout<<"tiff2inr : !! wrong number of arguments !!"<<endl;
35
      cout<<"Usage : tiff2inr img.tif compress"<<endl;
36
      return 0;
37
    }
38

    
39
// -------------------
40
// Sparsing arguments
41
// ------------------- 
42
  string name=argv[1];
43
  
44
  bool compress=true;
45
  if (argc==3)
46
        {
47
        if (string(argv[2])=="0")compress=false;
48
        cout<<"Output file will not be compressed. "<<endl;
49
        }
50
  
51
  CImg<> img;
52
  CImg<char> description;
53
  float tailleVoxel[3] = {0};  
54
  
55
  if(name.compare(name.size()-4,4,".tif")==0)
56
  {
57
        cout<<"The input file is a .tif file. OK"<<endl;   
58
  }
59
  else
60
  {
61
        cout<<"This is a tif file converter. Please give a .tif file as input."<<endl;
62
        return 0;
63
  }
64
  
65
// -----------------------
66
// Reading the .tif image file
67
// -----------------------
68
cout<<"File to read : "<<name<<endl;
69
  if(name.compare(name.size()-4,4,".tif")==0)
70
  {
71
        cout<<"The input file is a .tif file."<<endl;   
72
  }
73
  else
74
  {
75
        cout<<"This is a tif file converter. Please give a .tif file as input."<<endl;
76
        return 0;
77
  }
78
  
79
img.load_tiff(name.c_str(),0,~0U,1,tailleVoxel,&description);
80
cout<<"Image depth : "<<img.depth()<<endl;
81
cout<<"Voxel size : ("<<tailleVoxel[0]<<","<<tailleVoxel[1]<<","<<tailleVoxel[2]<<")"<<endl;
82

    
83

    
84
// -----------------------
85
// Writing the .inr or .inr.gz file
86
// -----------------------
87
              
88
name.erase(name.size()-4);
89
string newname=name+string(".inr");
90
CImg<unsigned char> imgbis=img;
91
img.assign();
92
imgbis.save_inr(newname.c_str(),tailleVoxel);
93
imgbis.assign();
94

    
95
if (compress)
96
        {
97
                string zip="gzip -f "+newname;
98
                if(system(zip.c_str()));
99
        }
100

    
101
return 0;
102
}