DGtal  0.6.devel
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
Public Types | Public Member Functions | Static Public Member Functions
DGtal::MagickReader< TImageContainer > Struct Template Reference

#include <MagickReader.h>

Public Types

typedef TImageContainer ImageContainer
typedef
TImageContainer::Domain::Vector 
Vector

Public Member Functions

 BOOST_STATIC_ASSERT ((ImageContainer::Domain::dimension==2))

Static Public Member Functions

static ImageContainer importImage (const std::string &filename, bool topbotomOrder=true) throw (DGtal::IOException)

Detailed Description

template<typename TImageContainer>
struct DGtal::MagickReader< TImageContainer >

Aim: implements methods to read a 2D image using the ImageMagick library.

Description of template class 'MagickReader'

Template Parameters:
TImageContainerthe image container to use.

Definition at line 64 of file MagickReader.h.


Member Typedef Documentation

template<typename TImageContainer>
typedef TImageContainer DGtal::MagickReader< TImageContainer >::ImageContainer

Definition at line 69 of file MagickReader.h.

template<typename TImageContainer>
typedef TImageContainer::Domain::Vector DGtal::MagickReader< TImageContainer >::Vector

Definition at line 70 of file MagickReader.h.


Member Function Documentation

template<typename TImageContainer>
DGtal::MagickReader< TImageContainer >::BOOST_STATIC_ASSERT ( (ImageContainer::Domain::dimension==2)  )
template<typename TImageContainer >
TImageContainer DGtal::MagickReader< TImageContainer >::importImage ( const std::string &  filename,
bool  topbotomOrder = true 
) throw (DGtal::IOException)
inlinestatic

Main method to import an Image into an instance of the template parameter ImageContainer.

Parameters:
filenamethe file name to import.
topbotomOrderif true, the point of coordinate (0,0) will be the bottom left corner image point (default) else the center of image coordinate will be the top left of the image (not usual).
Returns:
an instance of the ImageContainer.
Todo:
create converters RGB->Value

Definition at line 40 of file MagickReader.ih.

{
int w,h;
const Magick::PixelPacket *cacheRead;
Magick::InitializeMagick(NULL);
Magick::Image img;
try
{
img.read ( filename );
}
catch( ... )
{
std::cout << "MagickReader : can't open " << filename << endl;
throw dgtalio;
}
w = img.size().width();
h = img.size().height();
//@todo Check Magick::Types according to ValueType
img.type ( Magick::TrueColorType );
img.modifyImage();
cacheRead = img.getConstPixels ( 0, 0, w, h );
//@todo check ImageMagick errors.
//trace.error() << "MagickReader : can't open "<< filename<<endl;
typename TImageContainer::Point firstPoint;
typename TImageContainer::Point lastPoint;
firstPoint = TImageContainer::Point::zero;
lastPoint[0] = w-1;
lastPoint[1] = h-1;
typename TImageContainer::Domain domain(firstPoint,lastPoint);
TImageContainer image(domain);
typename TImageContainer::Value val;
//We scan the file
typename TImageContainer::Domain::ConstIterator it = domain.begin(),
itend=domain.end();
for(; it != itend; ++it)
{
const Magick::PixelPacket *pixel = cacheRead + w * ((topbotomOrder)? ( h - 1 - (*it)[1] ): (*it)[1] ) + (*it)[0];
val = (pixel->red + pixel->green + pixel->blue) % 256;
// std::cout<<" valread= "<< (int)val << std::endl;
image.setValue( (*it), val );
}
return image;
}

The documentation for this struct was generated from the following files: