File: slice_image.cpp

package info (click to toggle)
cgal 6.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 144,912 kB
  • sloc: cpp: 810,858; ansic: 208,477; sh: 493; python: 411; makefile: 286; javascript: 174
file content (27 lines) | stat: -rw-r--r-- 970 bytes parent folder | download | duplicates (3)
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
#include <CGAL/ImageIO.h>
#include <iostream>
#include <string>

int main(int argc, char **argv) {
  if (argc != 3) {
    std::cerr << "Usage: slice_size <input> <output>\n";
    return argc != 1;
  }
  _image *image = ::_readImage(argv[1]);
  if (!image)
    return 2;
  auto *new_image = ::_createImage(image->xdim, image->ydim, image->zdim / 2 + 1, 1,
                                   image->vx, image->vy, image->vz*2, image->wdim,
                                   image->wordKind, image->sign);
  const auto* const data = static_cast<char*>(image->data);
  auto* new_data = static_cast<char*>(new_image->data);
  const auto slice_size = image->wdim * image->xdim * image->ydim;
  for (auto k = 0ul; k < image->zdim; k+=2) {
    auto pos = data + slice_size * k;
    new_data = std::copy(pos, pos + slice_size, new_data);
  }
  auto r = ::_writeImage(new_image, argv[2]);
  if(r != ImageIO_NO_ERROR) return 3;
  ::_freeImage(image);
  ::_freeImage(new_image);
}