28 #include<boost/current_function.hpp>
30 #include "../image_reader.hpp"
31 #include "../image_info.hpp"
123 static std::vector<size_t>
139 static std::vector<size_t>
179 template<
typename CTYPE>
180 void _read_data(
size_t i,
size_t c,CTYPE &data);
196 explicit tiff_reader(
const pni::core::string &fname);
221 virtual size_t nimages()
const;
239 virtual void close();
253 template<
typename CTYPE> CTYPE
image(
size_t i,
size_t c=0)
258 try { data = CTYPE(info.
npixels()); }
261 throw memory_allocation_error(EXCEPTION_RECORD,
262 "Allocation of image data container failed!");
288 template<
typename CTYPE>
289 void image(CTYPE &data,
size_t i,
size_t c=0)
293 if(data.size() != info.
npixels())
295 std::stringstream ss;
296 ss<<
"Container size ("<<data.size()<<
") does not match";
297 ss<<
"number of pixels ("<<info.
npixels()<<
")!";
298 throw size_mismatch_error(EXCEPTION_RECORD,ss.str());
307 friend std::ostream &
operator<<(std::ostream &o,
312 template<
typename CTYPE>
323 reader.
read(c,stream,data);
tiff_reader & operator=(tiff_reader &&r)
move assignment operator
Definition: tiff_reader.cpp:259
image information type
Definition: image_info.hpp:43
base class for image readers
Definition: image_reader.hpp:53
virtual size_t nimages() const
get number of images
Definition: tiff_reader.cpp:270
~tiff_reader()
destructor
Definition: tiff_reader.cpp:255
static std::vector< size_t > _get_bits_per_sample(std::ifstream &stream, const tiff::ifd &ifd)
get bits per sample
Definition: tiff_reader.cpp:147
CTYPE image(size_t i, size_t c=0)
read image data
Definition: tiff_reader.hpp:253
friend std::ostream & operator<<(std::ostream &o, const tiff_reader &r)
output operator of an TIFFReader object
Definition: tiff_reader.cpp:332
static strip_reader create(std::ifstream &stream, const ifd &image_dir, const image_info &info)
create StripReader instance
Definition: strip_reader.cpp:97
tiff_reader()
default constructor
Definition: tiff_reader.cpp:232
virtual image_info info(size_t i) const
get ImageInfo
Definition: tiff_reader.cpp:276
static size_t _read_ifd_size(std::ifstream &stream)
read IFD size
Definition: tiff_reader.cpp:90
static type_id_t _get_type_id(size_t bps, size_t sf)
determine channel data type
Definition: tiff_reader.cpp:180
std::ifstream & _get_stream() const
get stream
Definition: data_reader.hpp:84
void read(size_t c, std::ifstream &stream, CTYPE &data)
template to read image data of various type
Definition: strip_reader.hpp:147
static void _check_if_tiff(std::ifstream &stream)
check if image is TIFF
Definition: tiff_reader.cpp:60
Definition: cbf_reader.hpp:41
void _read_ifds()
read IDF data from the file
Definition: tiff_reader.cpp:99
TIFF file reader.
Definition: tiff_reader.hpp:49
size_t npixels() const
get total number of pixels
Definition: image_info.hpp:109
virtual void open()
open the file
Definition: tiff_reader.cpp:317
IFD - Image File Directory class.
Definition: ifd.hpp:57
virtual void close()
close the file
Definition: tiff_reader.cpp:325
static int32 _read_ifd_offset(std::ifstream &stream)
read IFD offset
Definition: tiff_reader.cpp:81
reader for strip data in a TIFF file
Definition: strip_reader.hpp:43
static std::vector< size_t > _get_sample_format(std::ifstream &stream, const tiff::ifd &ifd)
get sample format
Definition: tiff_reader.cpp:165
void image(CTYPE &data, size_t i, size_t c=0)
read image data
Definition: tiff_reader.hpp:289
std::vector< tiff::ifd > _ifds
IFD list.
Definition: tiff_reader.hpp:53
bool _little_endian
true if data is stored as little endian
Definition: tiff_reader.hpp:52
static bool _is_little_endian(std::ifstream &stream)
check binary encoding
Definition: tiff_reader.cpp:40
void _read_data(size_t i, size_t c, CTYPE &data)
read data from the file
Definition: tiff_reader.hpp:313